给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。
要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出。
举一个例子:
we choose TO go 2 the 123 moon
程序应当输出:
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。
输入样例:
we choose TO go 2 the 123 moon
输出样例:
MOON 321 THE 2 GO to CHOOSE WE
#include <stdio.h>
#include <string.h>
main()
{
char a[1000],b,c,k[1000],h,L=0;
int l,i,j,n=0,M=0,g;
gets(a);
l=strlen(a);
for(i=0;i<l;i++)
{
if(a[i]>='a'&&a[i]<='z')
{a[i]=a[i]-32;
}
else if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]+32;
}
for(i=0;i<=l;i++)
{
if(a[i]==' ')
M++;
else break;
}
for(i=l-1;i>=M;i--)
{
if(a[i]!=' ')
{
k[n]=a[i];
n++;
}
else if(n!=0)
{if(k[n-1]>='0'&&k[n-1]<='9')
{
for(h=0;h<n;h++)
printf("%c",k[h]);
printf(" ");
n=0;
L=1;
}
else {for(h=n-1;h>=0;h--)
printf("%c",k[h]);
printf(" ");
n=0;
L=1;
}
}
}
if(k[n-1]>='0'&&k[n-1]<='9')
for(h=0;h<n;h++)
printf("%c",k[h]);
else
for(h=n-1;h>=0;h--)
printf("%c",k[h]);
}