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,本人愚钝,实在找不到哪里出问题。。
展开
 我来答
vNv_齐齐
2012-05-11 · TA获得超过207个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:234万
展开全部
#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'这肯定不行的,而且你原来这种如果最后一个字符不是空格就会少数一个单词,所以改进了一下方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
思念白云蓝天
2012-05-11 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:99.4万
展开全部
你的代码带冗余了,可以先把输入的句子用trim函数处理(具体用法查资料,我太久没用C了),处理的目的就是去掉句子中多余的空格(可能相邻两个单词之间会有两个或多个空格,处理后,只会存在一个空格),然后计算句子中空格的个数就知道单词数了(这个应该会吧?)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
单色调的张扬
2012-05-11 · 超过12用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:29.6万
展开全部
你的for循环根本进不去,for(i=0;i<1000;i++)即可,你那个i !='\0',你已经i=0了,不可能进去。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kangjiabei
2012-05-11 · TA获得超过281个赞
知道小有建树答主
回答量:398
采纳率:100%
帮助的人:273万
展开全部
你可以写成这样的样式while((c=getchar())!='\n')当换行就结束输入了 if都在while语句中 ,而且还不要定义数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式