题目:用户输入单词,以空格分割单词,编程统计单词个数,并将单词中的大写字母变为小写字母,最后输出。
这道题一共有两个坑。首先输入不能用scanf,因为检测到空格就会结束输入。所以输入只能用gets()。然后在判断字符串长度的时候也不能用strlen()函数,因为strlen()在检测到空格的时候就会认为字符串结束了,所以只能得到一个单词的字符串长度。判断一句话的字符串长度时应该用结尾是否为\0为标志。
主函数代码如下:
char arr[100];
//int n = strlen(arr); //err:n只能等于第一个单词的长度
int num = 1;
int word=0;
printf("请输入一句英文:");
gets(arr);
for(int i=0; arr[i]!='\0'; i++)
{
if(arr[i]>='A' && arr[i]<='Z')
arr[i]+=32;
if(arr[i]==' ')
{
num++;
}
}
printf("一共有%d个单词",num);
printf("%s",arr);
return 0;
代码测试结果如下: