关于统计一句话中的单词个数的问题,
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/02 23:30:00
关于统计一句话中的单词个数的问题,
我的程序为什么总是输出的是0?
#include"stdio.h"
int countword();
main()
{
printf("%d\n",countword());
}
int countword()
{
int flag=0,new=0;char c;
while((c=getchar())!='\n')
{
if(c!=" ")
flag=1;
else if(flag==1)
{
flag=0;
new++;
}
}
return new;
}
我的程序为什么总是输出的是0?
#include"stdio.h"
int countword();
main()
{
printf("%d\n",countword());
}
int countword()
{
int flag=0,new=0;char c;
while((c=getchar())!='\n')
{
if(c!=" ")
flag=1;
else if(flag==1)
{
flag=0;
new++;
}
}
return new;
}
![关于统计一句话中的单词个数的问题,](/uploads/image/z/5640089-41-9.jpg?t=%E5%85%B3%E4%BA%8E%E7%BB%9F%E8%AE%A1%E4%B8%80%E5%8F%A5%E8%AF%9D%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E4%B8%AA%E6%95%B0%E7%9A%84%E9%97%AE%E9%A2%98%2C)
首先把new改写成newword,因为new是系统的保留字,再一个,if(c!=" ")
改成if(c!=' '),第三个,按照你的程序来看的话,还要改一个地方,你定义new的初值为0,比如我输入good boy后回车,当判断到空格的地方时,flag的值变为1,执行else if语句,new++,现在new的值为1,继续判断,最后判断到回车也没有空格,退出循环,此时程序的运行结果为1,但实际应该为2啊,所以说你的思路稍微有点错误,但只要将new的初值赋为1便OK了
正确的程序:
#include"stdio.h"
int countword();
main()
{
printf("%d\n",countword());
}
int countword()
{
int flag=0,new=1;char c;
while((c=getchar())!='\n')
{
if(c!=' ')
flag=1;
else if(flag==1)
{
flag=0;
new++;
}
}
return new;
}
改成if(c!=' '),第三个,按照你的程序来看的话,还要改一个地方,你定义new的初值为0,比如我输入good boy后回车,当判断到空格的地方时,flag的值变为1,执行else if语句,new++,现在new的值为1,继续判断,最后判断到回车也没有空格,退出循环,此时程序的运行结果为1,但实际应该为2啊,所以说你的思路稍微有点错误,但只要将new的初值赋为1便OK了
正确的程序:
#include"stdio.h"
int countword();
main()
{
printf("%d\n",countword());
}
int countword()
{
int flag=0,new=1;char c;
while((c=getchar())!='\n')
{
if(c!=' ')
flag=1;
else if(flag==1)
{
flag=0;
new++;
}
}
return new;
}