输入一行字符,统计其中有多少单词,单词之间用空格分隔开 不要用string和数组,下面的代码该怎么改啊 急!

#include <stdio.h>
int main(void)
{ int num,word;
char ch;
printf("请输入一行字符: ");
for( ; ; )
{
ch = getchar();

if(ch == '\n') break;}
if(ch == ' ' ) word=0;
else if((ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z'))
num ++;
word=1; }
printf("单词数目:%d\n",num);
return 0;
}

#include "stdio.h"

main()

{

char string[81]; /*定义一个字符型数组*/

int i,num=0,word=0; /*定义几个整型常量,i用来控制循环次数,num表示单词个数,word相当于一个标志*/

char c; /*定义一个字符型变量*/

gets(string); /*获取用户输入的一句话,在这句话的末尾系统会自动添加一个结束标志'\0'*/

for (i=0;(c=string [i] )!='\0';i++) /*从string[0]开始判断,只要它不是结束标志,就执行下面的语句*/

if(c==' ') /*判断当前字符是不是空格,比如I am a boy,第一个I不是空格,所以 就不执行word=0,而执行下一句
判断word是不是等于0(word=0表示把0赋给word,word==0表示判断word等不等于0),显然是的,因为
开始时赋给word的值是0,所以执行语句:“把1赋给word;num++”,此时num为1。再判断第二个,是空格,
所以再把0赋给word。再判断第三个a,不是空格,所以执行else if(word==0),因为刚才把0赋给word了,
所以执行“把1赋给word;num++”,此时num为2,再判断第四个m,不是空格,但此时word为1,所以
else if(word==0)语句不再执行,可以看出word的目的就是防止num重复相加,此后以此类推*/
word=0;

else if(word==0)

{ word=1; num++; }

printf("There are %d words in the line. \n" , num);

}
不知道我有没有说清楚,我自己看程序的时候就是这样自己按程序走几次,一般都能懂,希望对你有帮助···
温馨提示:答案为网友推荐,仅供参考
相似回答