C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开#include 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)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 18:06:38
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开#include 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)
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开
#include
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);
}
运行情况如下:
I am a boy.
There are 4 words in the line.
就是这里的if(c=='') word=0;
else
if(word==0)
{ word=1; num++; }
看不懂啊 开头如果c==‘’就说明出现单词word=0是表示未出现单词 但是下面word==0了 是怎么回事啊 还有这个循环是怎么循环的哦 我是菜鸟 很笨.
还有就是word==0为什么是表示输入得是前一个字符为空格 关键就在这里啊 一定要详细点 一楼的我看不很明白 关键点要说清楚啊
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开#include 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)
你弄的太乱,我整理了一下:
#include
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了
好了,就说这么多,不懂再问我