以下程序,计算一句话中的单词个数,问原理
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 15:04:00
以下程序,计算一句话中的单词个数,问原理
#include
main()
{
char string[81];
int i,num = 0,word = 0;/*word标志位*/
char c;
gets(string);
for(i = 0;(c = string[i])!='\0';i++)
if(c == ' ') word = 0;
else if(word == 0) \*这里通过计算空格个数来获得单词个数,这里又加了个条件语句,假如遇见两个连续空格,条件似乎依旧成立,岂不是计算错误了,应该这么做,还是我理解错误*\
{
word = 1;
num++;
}
printf("There are %d words in the line.\n",num);
}
#include
main()
{
char string[81];
int i,num = 0,word = 0;/*word标志位*/
char c;
gets(string);
for(i = 0;(c = string[i])!='\0';i++)
if(c == ' ') word = 0;
else if(word == 0) \*这里通过计算空格个数来获得单词个数,这里又加了个条件语句,假如遇见两个连续空格,条件似乎依旧成立,岂不是计算错误了,应该这么做,还是我理解错误*\
{
word = 1;
num++;
}
printf("There are %d words in the line.\n",num);
}
这个程序的运行没有问题,虽然有改进的地方.
c = string[i] 这个已经是按照字符“一个一个”地读取(在for循环里)并判断string字符串中的字符.即便是连续两个空格,第1个空格,word被赋值为0,记数标志没有设置,那么后面的num不会执行;第2个空格(任在for循环中执行),也不会设置标志,因此后面的num++也不执行,所以不必担心.
程序改进的地方或应该注意的是,string[81]这样的写法,没有对输入作限制,很容易溢出;比如用户输入字符串超过80会怎样?而且string[]也没有初始化(虽然大多现代c/c++编译器都会自动初始化)但依然应该有好习惯.
如果不是必须,其实可以用strtok这样现成的函数作统计,好处是分隔符可以随时添加,而且可以不止一个,这样比自己写代码一一比较要方便.当然strtok有自己的问题,比如会破坏原来的字符串,因此也许需要先copy保留原来的字符串,然后再处理.
c = string[i] 这个已经是按照字符“一个一个”地读取(在for循环里)并判断string字符串中的字符.即便是连续两个空格,第1个空格,word被赋值为0,记数标志没有设置,那么后面的num不会执行;第2个空格(任在for循环中执行),也不会设置标志,因此后面的num++也不执行,所以不必担心.
程序改进的地方或应该注意的是,string[81]这样的写法,没有对输入作限制,很容易溢出;比如用户输入字符串超过80会怎样?而且string[]也没有初始化(虽然大多现代c/c++编译器都会自动初始化)但依然应该有好习惯.
如果不是必须,其实可以用strtok这样现成的函数作统计,好处是分隔符可以随时添加,而且可以不止一个,这样比自己写代码一一比较要方便.当然strtok有自己的问题,比如会破坏原来的字符串,因此也许需要先copy保留原来的字符串,然后再处理.
以下程序,计算一句话中的单词个数,问原理
关于统计一句话中的单词个数的问题,
android 怎样将一句话中的单词个数逐个输出,统计相同单词的个数
c语言程序改错题以下程序中,main函数通过调用fun()函数统计整数序列中的负数的个数以及平均值.本题约定平均值由函数
(1)以下程序的功能是计算下面式子的值.请改正程序中的错误. (1)×(1+2)×(1+2+3)×(1+2+3+4)×…
翻译一句话, 以及问个单词
用VF编写程序,完成计算n个数的平均值.
设计一个计算20个数的平均数的程序
编写一个程序 计算下面n个数的和
Java 统计一句话中相同单词的个数
8.编一个程序,输入10个整数存入数组,利用foreach语句计算数组中的奇数与偶数的个数.
1、下面程序的功能是计算并输出10个数中的最大值和最小值,请填空.main() { int i,max,min,a[10