C程序设计 统计一句英文句子单词个数
#include<stdio.h>main(){charstr[1000];intn=0;inti;intdanci=0;printf("请输入一句英文句子");gets...
#include <stdio.h>
main()
{char str[1000];
int n=0;int i;
int danci=0;
printf("请输入一句英文句子");
gets(str);
for(i=0;i!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='z'))
n++;
else
{
if(n!=0)
{danci++;
n=0;
}
}
}
printf("单词数为%d",danci);
}
我的想法是2个空格之间必是单词,所以当n≠0而下一个字符是空格时,就可以保证前面是一个单词。然后把n赋值为0,继续循环。
但是程序输出一直是0,本人愚钝,实在找不到哪里出问题。。 展开
main()
{char str[1000];
int n=0;int i;
int danci=0;
printf("请输入一句英文句子");
gets(str);
for(i=0;i!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='z'))
n++;
else
{
if(n!=0)
{danci++;
n=0;
}
}
}
printf("单词数为%d",danci);
}
我的想法是2个空格之间必是单词,所以当n≠0而下一个字符是空格时,就可以保证前面是一个单词。然后把n赋值为0,继续循环。
但是程序输出一直是0,本人愚钝,实在找不到哪里出问题。。 展开
4个回答
展开全部
#include <stdio.h>
int main()
{
char str[1000];
int n=0;int i;
int danci=0;
printf("请输入一句英文句子");
gets(str);
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
{
if(n==0)
danci++;
n++;
}
else
{
n=0;
}
}
printf("单词数为%d",danci);
return 0;
}
这样改,;i!='\0'这肯定不行的,而且你原来这种如果最后一个字符不是空格就会少数一个单词,所以改进了一下方法。
int main()
{
char str[1000];
int n=0;int i;
int danci=0;
printf("请输入一句英文句子");
gets(str);
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
{
if(n==0)
danci++;
n++;
}
else
{
n=0;
}
}
printf("单词数为%d",danci);
return 0;
}
这样改,;i!='\0'这肯定不行的,而且你原来这种如果最后一个字符不是空格就会少数一个单词,所以改进了一下方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码带冗余了,可以先把输入的句子用trim函数处理(具体用法查资料,我太久没用C了),处理的目的就是去掉句子中多余的空格(可能相邻两个单词之间会有两个或多个空格,处理后,只会存在一个空格),然后计算句子中空格的个数就知道单词数了(这个应该会吧?)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的for循环根本进不去,for(i=0;i<1000;i++)即可,你那个i !='\0',你已经i=0了,不可能进去。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以写成这样的样式while((c=getchar())!='\n')当换行就结束输入了 if都在while语句中 ,而且还不要定义数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询