百韵网 >>  正文

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

来源:www.baiyundou.net   日期:较早时间

#include<stdio.h>

int main()

intword,num=0;

char ch;

while((ch=getchar())!='\n')

if(ch=='')

word=0;

else

if(word==0)

num++;

word=1;

printf("%d",num);

return0;

扩展资料:

分析

若当前字符=空格

YESﻩ未出现新单词,使word=0,num不累加

NOﻩ前一字符为空格(word=0),新单词出现,使num加1,word=1

前一字符为非空格(word=1),未出现新单词,num不加1*/

其它方法:

#include<stdio.h>

int main()

char string[81];

int i,num=0,word=0;

char c;

gets(string);

for(i=0;((c=string[i])!='\0');i++)

if(c=='')word=0;

elseif(word==0)

word=1;

num++;

printf("thereare%dwordsinthisline.\n",num);

return0;



#include<stdio.h>
int main()
{
    char string[81];
    int i,num=0,word=0;
    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.
",num);
return 0;
}



这为朋友,很少在电脑上调程序吧,这段程序中有一些值得注意的错误。首先,标准输入输出头文件是#include<stdio.h>,第二、数组string后是中括号,应该是string[81],第三,string和String是不同的,c语言区分大小写,最后一个问题,编程时所有符号一律用英文输入,这个虽然是小问题,但一开始就应养成良好的习惯。
下面是我改好的程序:
#include<stdio.h>
main()
{
char string[81];
int i,num=0,word=0;
char s;
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);
}
好了,言归正传。这段程序有个值得注意的问题,for循环没有大括号,意味着它包含一个if-else语句,if语句中是c=' '表示一个单词的结束,然后用word标记,word=0时表示有一个完整的单词。当读入到下一个字母时,表示又有一个新的单词,所以if(word==0)时,num++,同时将word取消标记准备下一次标记。比如说:
输入I am a boy.
I读入:因为word==0 所以num=1,word=1
读入一个空格:word=0 说明第一个单词读入完毕
a读入:因为word==0 所以num=2,word=1 说明有第二个单词
m读入:word=1 说明第二个单词未读完
读入一个空格 word=0 说明第二个单词读入完毕
a读入 因为word=0 说明有第三个单词 所以 num=3,word=1
以此类推,得到结果为4

你弄的太乱,我整理了一下:
#include<stdio.h>
main(){
char string[81];
int i,num=0,word=0;
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);
}

你说的这句
if(c==' ') word=0;
else if(word==0){
word=1;
num++;
}
当c=空格时,令word=0;不执行else if语句
直到c!=空格时(注意连续多个空格的处理),不执行if语句,执行else if语句
由于前面令word=0,所以到空格后第一非空格字符时,word是=0的,else if判断成功,
执行word=1; num++;,第二个非空格字符时,word就=1了,就不执行word=1; num++;了
这样一个单词num就加一次
由于初始时令word=0,故第一单词的第一个字母时,num就等于1了

好了,就说这么多,不懂再问我

首先要知道C中选择控制语句if--else语句的配对,C语言规定else与其前面最近的一个没有配对的if成对。这题中很显然第一个if与下面的else配对。第一个if语句意思是说:如果C中的值是‘空格’则将0值给word,下面紧跟着一个else,如果C中的值不是空格,就执行第二个if。第二个if意思是说如果word中的值是哦,就把1给word,然后对num加一。
理解上面的关系你就很容易理解这里面变量word的含义了。其实word这个变量仅仅是一个单词输入完的一个标志。当输入一个单词,输入空格时,程序中word等于0,接着执行else,直接转入执行第二个if,此时判断word是不是等于0,如果等于零说明C中的值是空格,及一个单词已经输入完,此时就对word置一,为下次判断做准备,然后对num加一。如果再输入一个新的单词,当没有输完时,及C中的值不是空格,此时第一个if不执行,执行else,接着又执行第二个if。但此时word的值是1,因此第二个if也不执行,即num不会加一。
体会一下吧,希望对你有所帮助。

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

#include
usingnamespacestd;
intmain(){
chara;ints=1;
scanf("%c",&a);
while(a!='.')
{
if(a==''||a==',')s++;
scanf("%c",&a);
}
cout<<s;
return0;
}

扩展资料
C语言统计文件中的字符数、单词数注意事项
1、空白字符(空格和tab缩进)不计入字符总数;

2、单词以空格为分隔;

3、不考虑一个单词在两行的情况;

4、限制每行的字符数不能超过1000。
5、每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。fgets()函数用于从文件中读取一行或指定个数的字符。

#include
int main()
{
int j=0;
char c;
int flag=0;
c=getchar();
while(c!=EOF)
{
if(c>=33&&c<=126&&flag==0)
{
flag==1;
}

else if(c==' '&&flag==1)
{
j++;
}
c=getchar();
}
printf("单词个数为%d",j);
}

相关要点总结:
(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网