OJ 上一道题,看了一小时没发现哪里错了
Description:输入一个英文句子,句子中仅包含英文字母,标点符号和空格,其中空格和标点符号将句子划分成一个个独立的单词,除去句子中的标点符号和空格,将句子中的每个单词的首字母大写,然后输出句子,输出时各个单词之间以一个空格隔开,句子以“.”结束。
Input:
输入只有一行,包含一个长度都不超过100的字符串S,表示英文句子。
Output:
输出只有一行,即按要求输出处理后的英文句子,若句子中不含任何单词,则输出一个“.”。
Sample Input1 Sample Ouput1
Who love?, SoLo.. Who Love SoLo.
Sample Input2 Sample Ouput2
Who,love???SoLo Who Love SoLo.
Sample Input3 Sample Ouput3
----Who,love???SoLo Who Love SoLo.
我这样写,就是Wrong Answer
#include<stdio.h>
#include<string.h>
char str[1000];
int main(void)
{
int N,i,a,b=0;
scanf("%d",&N);
getchar();
while(1)
{
if(N == 0)break;
for(i=0;i<N;i++)
{
//printf("%d\n",i);
gets(str);
for(a=0;a<strlen(str);a++)
{
if(!(('a'<=str[a]&&'z'>=str[a])||('A'<=str[a]&&'Z'>=str[a])))str[a]=' ';
}
for(a=1;a<strlen(str);a++)
{
if(str[a]!=' '&&str[a-1]==' '&&(!('A'<=str[a]&&'Z'>=str[a])))
{
str[a]-=32;
}
}
if('a'<=str[a]&&'z'>=str[a])
str[0] -= 32;
for(a=0;a<strlen(str);a++)
{
if(('a'<=str[a]&&'z'>=str[a])||('A'<=str[a]&&'Z'>=str[a]))b++;
}
if(b!=0)
{
for(a=0;a<strlen(str);a++)
{
if(str[a]!=' ')printf("%c",str[a]);
if(str[a+1]==' '&&str[a+2]!=' ')printf(" ");
}
}
printf(".");
printf("\n\n");
b=0;
}
// printf("%d\n",i);
b=0;
scanf("%d",&N);
getchar();
}
return 0;
}