c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()

int i,c,num=0,word=0;
char str[40];
gets(str);
for(i=0;c=(str[i])!='\0';i++)
if(c==" ") word=0;
else if(c==word)

word=1;
num++;


printf("%d\n",num);


程序如何修改?

这两个我测试过,符合你的问题
一个是数组,一个是指针,选用指针好些。
#include<stdio.h>
int main()

int num = 0, word = 0, i = 0;
char str[40];
gets(str);
while(str[i] != '\0')

if(str[i] == ' ')

word = 0;

else

if(0 == word)

num++;
word = 1;

else

word = 1;


i++;

printf("%d\n",num);
return 0;


#include<stdio.h>
#include<stdlib.h>
int main()

int num = 0, word = 0;
char *str = NULL;
str = (char *)malloc(sizeof(char)*40);
gets(str);
while(*str != '\0')

if(*str == ' ')

word = 0;

else

if(0 == word)

num++;
word = 1;

else

word = 1;


str++;

printf("%d\n",num);
return 0;
参考技术A 说实话,我真怀疑你是改了程序来刷分的……
程序主要在这几个地方有问题:
#include<stdio.h>
void main()

int i,c,num=0,word=0;
char str[40];
gets(str);
for(i=0;(c=str[i])!='\0';i++)//你的源程序是先比较后赋值
if(c==' ') //c只能和字符比较,不能和字符串比较
word=0;
else if(word==0)//word是状态,你那句在干嘛?

word=1;
num++;


printf("%d\n",num);
参考技术B #include<stdio.h>
void main()

int i,c,num=0,word=0,flag=0;
char str[40];
gets(str);
for(i=0;c=(str[i])!='\0';i++)
if(c==' ')

if(flag==1)//排除前几个都是空格

word++;
flag==0;//消除中间出现连续空格


else

flag=1;//标志找到第一个不是空格的字符和下一个单词开始



printf("%d\n",world);
参考技术C 关键代码:做了两次才做成
#include "stdio.h"
#include "string.h"
void main()

char string[100];
int i=0,sum=0,flag=0;
gets(string);
while(string[i]!='\0')

if(flag==1 && string[i]!=' ')

++i;
continue;

if(string[i]==' ')

flag=0;
++i;

else

flag=1;
sum+=1;
++i;



printf("The word numbers is %d\n",sum);

以上是关于c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开的主要内容,如果未能解决你的问题,请参考以下文章

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

输入一个字符串,统计其中包含的单词个数,假设单词与单词之间用空格分隔。

C语言,输入一行英文字母,统计其中有多少个单词,单词之间用空格分隔.

输入一个字符串,统计其中单词的个数