关于C语言编程的问题。题目要求输入一个英文句子,单词之间用空格号隔开,找出句子里面一共多少个单词。

这是我的程序,但是结果老是2,请大家帮我指出其中的错误。#include<stdio.h>voidmain(){chara[100],c;inti,word=0,num=... 这是我的程序,但是结果老是2,请大家帮我指出其中的错误。
#include<stdio.h>
void main()
{
char a[100],c;
int i,word=0,num=1;
gets(a);
for(i=0;(c=a[i])!='\0';i++);
{
if(c==' ') word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("%d",num);
}
展开
 我来答
来自舜皇山喜悦的黑樱桃
2013-02-04 · TA获得超过118个赞
知道答主
回答量:58
采纳率:0%
帮助的人:35.6万
展开全部
你是想用word来做标志位?来判断是字母还是别的字符?for后面多了一个;分号
#include<stdio.h>
void main()
{
char a[100],c;
int i,word=0,num=1;
gets(a);
for(i=0;(c=a[i])!='\0';i++)
{
if(c==' ')
word=0;
else
continue;
if(word==0)
{
word=1;
num++;
}
}
printf("%d\n",num);
}

printf("%d\n",num);
}
BAKA_midai
2013-02-04
知道答主
回答量:22
采纳率:0%
帮助的人:22.1万
展开全部
主要问题在 for(i=0;(c=a[i])!='\0';i++); 这行的分号上,这里加了分号等于在这个循环中程序不执行任何操作!当然后面花括号中的语句也不会执行。还有个小问题,按你的写法,num的初值应为0。

下面是我改进的代码,自己比较优劣

#include<stdio.h>
void main()
{
char a[100],c;
int i,word=1;
gets(a);
for(i=0;a[i]!='\0';i++)
{
if(a[i]==' ') word++;
}
printf("%d\n",word);
}

满意请采纳~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a24a004
2013-02-04 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:28.2万
展开全部
逻辑问题 看你for里面的循环,如果遇到了一个空格,那么word=0,我猜你是希望在word=0之后,继续执行下面的elseif语句吧,这是不可能的。从语法方面上讲:else if 与if之间只会执行一个,因为else if执行的条件有两个:1.if(c == ' ')不成立,就是之前if语句不成立
2.就是自身条件:word == 0;如果你想让他执行完第一个if,还要执行else if ,那么 把后面的elseif 合并到第一个里面。
除此之外,你的程序还有一个问题,你有没有考虑过假如输入的第一字符就是空格,或者连续输入很多空格,你这种以空格个数判断单词个数的方法就很受制约了,计算出的字符个数岂不是很不准确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式