1 条题解

  • 0
    @ 2025-8-24 21:14:07

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 览遍千秋
    将伤与泪汇成力化作拳

    搬运于2025-08-24 21:14:06,当前版本为作者最后更新于2022-08-16 19:42:00,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    输入

    可以使用 getline 读入一整行后慢慢处理,也可以用 cin 分单词读入。

    while(cin >> s[++n])
    

    下面的讲解基于 cin 分单词读入。

    单词的处理

    单词可以分为以下几种:

    • 小写单词

    • 大写单词

    • 数字

    我们对三种字符串分别处理,如果是小写单词,则变为大写并正序输出;如果是大写单词,则变为小写并正序输出;如果是数字,则倒序输出。


    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    string s[1007];
    
    int main() {
    	while(cin >> s[++n]); --n;
    	for(int i = n; i >= 1; i--) {
    		for(int j = 0; j < (int)s[i].size(); j++) {
    			if(s[i][j] >= 'a' && s[i][j] <= 'z') s[i][j] -= 'a' - 'A';
    			else if(s[i][j] >= 'A' && s[i][j] <= 'Z') s[i][j] -= 'A' - 'a'; 
    		}
    		if(s[i][0] >= '0' && s[i][0] <= '9')
    			for(int j = (int)s[i].size() - 1; j >= 0; j--) cout << s[i][j];
    		else cout << s[i];
    		if(i != 1) cout << " ";
    	}
    }
    
    • 1

    信息

    ID
    7471
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者