编写一个函数,该函数能够统计一个英文字符串中有多少个单词。

第一行是整数n,表示测试的数据组数,下面是n行含空格的字符串(仅由空格和英文字符组成)。

这样为什么不行。。
#include<stdio.h>
void main()
{char a[100];
int n,i,k=0,j=0;
scanf("%d",&n);
getchar();

for(i=1;i<=n;i++)
{gets(a);
getchar();
while(a[j]!='\0')
{if(a[j]<='z'&&a[j]>='a'||a[j]<='Z'&&a[j]>='A')
if(a[j+1]==' ')
k++;
j++;}
k++;
printf("%d\n",k);
k=0;
j=0;}
}

测试的时候只发现了一个问题,就是字符串后面有空格的时候结果会多1。修改如下:
for(i=1;i<=n;i++)
{
gets(a);
getchar();
while(a[j]!='\0')
{
if(a[j]<='z'&&a[j]>='a'||a[j]<='Z'&&a[j]>='A')
if(a[j+1]==' ' || a[j+1]=='\0') //这里
k++;
j++;
}
//k++; //这里
printf("%d\n",k);
k=0;
j=0;
}

如果不是这个问题,请给出测试用的字符串和结果
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-29
for(i=1;i<=n;i++)
{gets(a);
getchar();
j=0;
while(a[j]!='\0')
{if(a[j]<='z'&&a[j]>='a'||a[j]<='Z'&&a[j]>='A')
if(a[j+1]==' ')
k++;
j++;}重新循环时j没有置零。追问

在后面已经置0了,你没看到吗

相似回答