qq转换器在线转换器:c语言小程序

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 00:13:08
这个谭老师的书中的一个小程序.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开.谭老师有说明.但我笨还是有几点不明白!
希望大侠们给程序加上注释,这样小弟就容易懂!特别是10到13行!程序如下.
#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);
}

for (i=0;(c=string[i])!='\0';i++) 在整个字符串间循环
if(c==' ')word=0; 如果当前字符是空格说明一个单词的结束.
else if(word==0) 如果有了一个单词,则单词的总数加一,使word=1,开始找下一个单词,但是这个程序在字符串中,单词之间只能用一个空格隔开否则统计出的单词个数是错误的.
{
word=1;
num++;
}

单说语句,没什么可说的。你自己写一个短句,按照程序逐行分析一下吧。
for语句的循环体是用于统计单词的,字符c为回车就会推出循环。
剩下字符c的情况分为两类,为“空格”或其他,当为其他时,表明是单词(如果是特殊字符也将被认为是单词,可以说是bug),将word置为“1”,表示这个字符是单词的一部分,单词个数num自加。由于判定是否为单词的变量word被置为“1”,else if不会被执行,num也不会自加。直到遇到“空格”,字符c的第二种情况,此时说明单词结束,将表示是否为单词的变量word置为“0”,表明单词结束。当遇到下一个非空格时,由于word已经被置为“0”,所以表明又遇到一个单词,word又被置为“1”,num自加……

单说语句,没什么可说的。你自己写一个短句,按照程序逐行分析一下吧。
for语句的循环体是用于统计单词的,字符c为回车就会推出循环。
剩下字符c的情况分为两类,为“空格”或其他,当为其他时,表明是单词(如果是特殊字符也将被认为是单词,可以说是bug),将word置为“1”,表示这个字符是单词的一部分,单词个数num自加。由于判定是否为单词的变量word被置为“1”,else if不会被执行,num也不会自加。直到遇到“空格”,字符c的第二种情况,此时说明单词结束,将表示是否为单词的变量word置为“0”,表明单词结束。当遇到下一个非空格时,由于word已经被置为“0”,所以表明又遇到一个单词,word又被置为“1”,num自加……

char string[81]; 这是定义一个字符型的数组
int i,num=0,word=0; 这是定义三个整型变量
char c; 定义一个字型
gets(string); 我想这应该是输入string的值吧
for (i=0;(c=string[i])!='\0';i++) 这是一条循环语句i先是等于0那对c 被赋值为string(0)而且不等于0最后一条你不会看不懂吧
if(c==' ')word=0; 这句是如果变量C等于0那么将0赋给WORD
else if(word==0) 这句是个条件语言如果是真那么执行下面的两条语句
{
word=1;
num++;