题目背景
请尽量在 30min 之内写完题目。这是指「写代码」的时间;「读题」时间不计算在内。
题目描述
给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。
要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出。
举一个例子:
we choose TO go 2 the 123 moon
程序应当输出:
MOON 321 THE 2 GO to CHOOSE WE
输入格式
仅一行,即需要反转的句子。
输出格式
仅一行,表示程序对句子的处理结果。
输入输出样例
输入 #1复制
we choose TO go 2 the 123 moon
输出 #1复制
MOON 321 THE 2 GO to CHOOSE WE
说明/提示
样例解释
首先应当按单词逆序,即:
moon 123 the 2 go TO choose we
小写变大写、大写变小写、倒转自然数之后,得到最终结果:
MOON 321 THE 2 GO to CHOOSE WE
数据规模与约定
对于 100% 的数据,句子中包含的单词数量不超过 1000,每个单词长度不超过 6。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e+3;
int cnt;
string x;
string a[maxn];
int main(){
while(cin>>x)a[++cnt]=x;
for(int i=cnt;i>=1;i--){
int len=a[i].length();
if(a[i][0]>='0'&&a[i][0]<='9'){
for(int j=len-1;j>=0;j--)cout<<a[i][j];
}
else{
for(int j=0;j<len;j++){
if(islower(a[i][j]))a[i][j]=toupper(a[i][j]);
else a[i][j]=tolower(a[i][j]);
cout<<a[i][j];
}
}
cout<<" ";
}
return 0;
}