输入一行字符,统计单词个数
#includeint main(){char string[81];int i;int num=0;//统计单词个数int word=0;//word=0表示未出现新单词;Word=1表示出现新单词char c;gets(string);for(i=0;(c=string[i])!='\0';i++)//只要字符不是'\0'就继续执行循环{if(c==
·
#include<stdio.h>
int main()
{
char string[81];
int i;
int num=0;//统计单词个数
int word=0;//word=0表示未出现新单词;Word=1表示出现新单词
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)//只要字符不是'\0'就继续执行循环
{
if(c==' ')word=0;//如果是空格字符,是word=0
else if(word==0)//如果不是空格字符且Word原值为0(Word原值为0表示前一个字符是空格)表示新单词出现
{//word=0表示前一个字符是空格,word=1意味着前一个字符是非空格
word=1;
num++;
}
}
printf("总共%d个字符\n",num);
}
法二是借鉴网上的:
输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。
第一个单词前,最后一个单词后也可能有0到多个空格。
比如:" abc xyz" 包含两个单词,"ab c xyz " 包含3个单词。
如下的程序解决了这个问题,请填写划线部分缺失的代码。
注意:只填写划线部分的代码,不要填写任何多余的内容。比如已经存在的小括号,注释或说明文字等。
#include<stdio.h>
int get_word_num(char* buf)
{
int n = 0;
int tag = 1;
char* p = buf;
for(;*p!=0 && *p!=13 && *p!=10;p++){
if(*p==' ' && tag==0) tag=1;
if(*p!=' ' && tag==1) { n++; tag=0; } //填空:*p!=' ' && tag==1
}
return n;
}
int main()
{
char buf[1000];
fgets(buf,1000,stdin);
printf("%d\n", get_word_num(buf));
return 0;
}
更多推荐

所有评论(0)