字符转换 Time Limit:1000MS Memory Limit:65536K Description 输入一个英文句子,句子中包含仅英文字母,标点符号和空格,其中空格和标点符号将句子划分成一个个独立的单词,除去句子中的标点符号和空格,将句子中的每个单词的首字母大写,然后输出句子,输出时各个单词之间以一个空格隔开,以“.”结束。 Input 输入数据包含多组测试实例,每组测试实例第一行是一个单独的整数N(0<=N<=1000),接下来是N行英文句子,每行英文句子不超过100个字符。 Output 按要求输出处理后的英文句子,每个句子占一行, 若句子中不含任何单词,则输出一个“.”,在每组测试实例后面输出一个空行,当N=0时结束处理。 Sample Input
2
we are,acmer.
word, is,beautiful.
1
i am, ready.
0 Sample Output
We Are Acmer.
Word Is Beautiful.
I Am Ready. Source
|
[Submit] [Go Back] [Status] [Discuss]
#include<stdio.h>
#include<string.h>
int main()
{
char input;
int n;
while(scanf("%d",&n),n)
{
getchar();
while(n--)
{
char word[100][20]= {NULL};
int i,count=0,clum=0,flag=0;
while((input=getchar())!='\n')
{
if(((input>='a')&&(input<='z'))||((input>='A')&&(input<='Z')))
{
if((flag==0)&&((input>='a')&&(input<='z')))
input+='A'-'a'; //变大写字母
word[count][clum]=input;
clum++;
if(flag==0) flag=1; //一个单词第一个变大写,后面原样
}
else
{
if(flag==1)
//如果不是字母,重新来,如果是连续的标点或空格,实际只算一次
{
count++;
clum=0;
flag=0;
}
}
}
for(i=0; i<count-1; i++)
printf("%s ",word[i]);
//输出实际上是一个单词一个单词在输出,这就是上面用到二维数组的原因
printf("%s.\n",word[i]);
}
}
return 0;
}