int main()
{ char str[1000];
int i,j,count=0,word=0;
gets(str);
for(i=0;str[i]!='\0';i++)
{ count=0;
if(str[i]==' ')
{ j=i;
for(;str[j]!=' ';j++)//判断连续空格的问题
if(str[i]==' ')
count++;
}
if(count>=1)
word++;
}
printf("个数%d",word);
return 0;
}
请问哪里出错了
word个数一直都是0
问题1:
你是想这样:
从空格 i 处, 往后依次寻找, 找到第一个不是空格的 j ,找到则count++
但实际效果是:
若 j 处不为空格,继续; 若 j 处为空格,结束for循环
由于 j = i; 所以for循环开始时 str[j] == ' ',所以会结束循环,所以count一直为0,word也永远不会++,这就是原因所在
问题2
就算上面的代码你改OK了,但是还有一个问题你没注意
从空格 i 处, 找到不是空格的 j 了,OK,
但是下一个 i,居然是i++,
请问按你这种算法,
那 "are---ok\0"(用符号"-"代替空格),岂不是第一个单词被计数三次了?
所以下一个i, 应该先 i = j, 再 i++
改法:(当然也有其他改法, 末尾判断字符串结尾处可能还有问题)
#include "stdio.h"
int main()
{
char str[1000];
int i, j, count = 0, word = 0;
gets(str);
for( i = 0; str[i] != '\0'; i++)
{
count = 0;
if(str[i] == ' ')
{
j = i;
for( ; str[j] == ' ' ; j++)
{
count++;
}
if(count >= 1)
{
word++;
i = j-1;
}
}
}
printf("个数%d",word);
return 0;
}
我头文件当然写了 只是提问没写出来
追答那你是想问怎么改?
请问哪里出错了——我没看你的代码,只是运行了一下
word一直都是0
追答#include "stdio.h"
int main()
{
char str[1000];
int i,j,count=0,word=0;
gets(str);
for(i=0;str[i]!='\0';i++)
{
// count=0;
if(str[i]==' ')
{
// j=i;
// for(;str[j]!=' ';j++)//判断连续空格的问题
// if(str[i]==' ') //没看明白你这儿像干嘛,只是统计空格的话,根本没这么麻烦
// count++;
// }
// if(count>=1)
word++;
}
}
printf("个数%d",word);
return 0;
}
说明白你想要什么结果~~我才好写代码
for(i=0;str[i]!='\0';i++)
{
// count=0;
if(str[i]==' ')
{
// j=i;
// for(;str[j]!=' ';j++)//判断连续空格的问题
// if(str[i]==' ') //没看明白你这儿像干嘛,只是统计空格的话,根本没这么麻烦
// count++;
// }
// if(count>=1)
word++;
}
统计空格啊 有空格就标记count+1 如果count大于1了 那单词数就+1 看不懂么??
那句if的确有点多余 但是删不删除对结果没改变
追答int main()
{ char str[1000];
int i,j,count=0,word=0;
gets(str);
for(i=0;str[i]!='\0';i++)
{
count=0;
if(str[i]==' ')
{ j=i;
for(;str[j]==' ';j++);//判断连续空格的问题
count++;
}
if(count>=1)
word++;
}
printf("个数%d",word);
return 0;
}
这样还有问题?你能输入吗?
【C语言程序设计】C语言统计单词个数,单词个数算法
统计英文文章中的单词数,可采用读取内容并统计空格数量的方法。程序识别空格,空格数+1即为单词总数。以“I love China”为例,统计结果为3个单词;以“I love Xichang College”为例,统计结果为4个单词。此方法简洁高效,适用于快速准确统计英文文章单词数量。在C语言中,字符串常量通过字符数组实现,...
C语言程序设计:输入一行字符,统计出其中单词的个数,个单词之间用空格分...
为了统计一行字符中的单词个数,我们可以编写一个简单的C语言程序。首先,我们需要定义一个足够大的字符数组来存储输入的字符串。接下来,我们要求用户输入一行字符,并在输入结束时按回车键。程序将统计并输出单词的数量。下面是一个示例程序,用于实现上述功能:include int main() { char str[100];pri...
C语言 计算单词个数!
printf("本行中共有%d个单词.\\n",num);} 这个是比较简单的写法。
C语言输入一段英文要求统计出这段英文的单词数,字符数,行数
isalnum(c))\/\/如果不是单词就把单词数+1nw++; else \/\/如果是单词 就把字符数+1 nc++;}printf("character=%d\\nlines=%d\\nwords=%d\\n",nc,nl,nw);}
C语言程序设计,输入一个英文句子,统计单词的个数。
在C语言程序设计中,一个基本的任务是统计输入的英文句子中的单词数量。以下代码片段展示了如何实现这一功能:首先,你需要在程序中包含必要的头文件,如, , 和,以使用标准输入输出和字符串处理功能。在main()函数中,定义一个字符数组string来存储用户输入的英文句子,以及几个变量来辅助统计:一个整数...
C语言统计单词个数,单词个数算法
当字符从' '变为字母时或其他字符时word从0变为1,而word从0变为1时就是一个单词,所以count+1;当字符由非' '变为' '时word从1变为0,准备判断下一个单词的出现,即等待字符由' '变为其他字符的出现。这样最后count就是记录了单词的个数,其实就是记录了字符由' '变为其他字符的次数!
C语言统计单词个数
‘\\0’和‘0’的区别: 在c语言中,它们都是字符,都用对应的ASCII码来存储。例如第一个ASCII码,0,对应字符为(Null),就是 ‘\\0’,即空字符。我们在c语言中判断一个字符串是否结束的标志就是看是否遇到‘\\0’,如果遇到‘\\0’,则表示字符串结束。字符‘0’和数字0的区别:前者是字符常量...
C语言统计该文本中 英语单词的个数 ?
int n =0;while(!feof(fp)){ fgets(en[n++], N, fp); \/\/输入英语短文 } for(i=0;i<n;i++){ state=0; \/\/设每行的开始都是单词的开始 for(j=0;en[i][j]!='\\0';j++){ if(en[i][j]==' '){ state=0; \/\/判断 en[i][j] 是否为空格字符 ...
C语言程序设计,输入一个英文句子,统计单词的个数。
char c;int i,num=0,sum=0,word=0;\/\/定义word用来指示一个单词是不是结束或新单词是否开始;printf("请从键盘输入一行需要查询的英文句子,进行单词数量统计:\\n\\n");gets(string);\/\/从键盘获得输入的字符串;\/\/以下统计句子中的英文字符个数;for(i=0;(c=string)!='\\0';i++)\/\/for循环...
C语言统计单词个数
核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。1、flag初始为1;2、遍历字符串。3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。4、在flag为0情况下,如果...