C++问题:输入一个英文句子,将每个单词的第一个字母改成大写字母。

#include<stdio.h>
#include<string.h>
int main(int argc,char *argv[])
{
int i;
char a[100];
while (scanf("%c",&a[0])!=EOF)
{
a[0]=a[0]-32;
for(i=1;i<100;i++)
{
scanf("%c",&a[i]);
if(a[i]=='\n') break;
else if(a[i-1]==' ') a[i]=a[i]-32;
}
for(i=0;i<strlen(a);i++)
printf("%c",a[i]);
strcpy(a, "");
}
return 0;
}
请问有什么问题么、、为什么后面总会多输出几个字符

第1个回答  2016-06-25
if(k==0&&a[i]<97&&a[i]>122)
这句有逻辑错误。a[i]不可能同时小于97和大雨122.后面那个&&应该是||。
应该是这句引起的。追问

哪来的这句话.........

相似回答