C语言编程题求教----输入一个字符 统计其中的单词个数

输入一串字符 统计其中的单词个数。*/各个单词间用空格隔开 空格数可以是多个/*
例子:
Input:Let's go to room 209
count=5

这是我做的程序:
#include <stdio.h>
int main(void)
{
char ch;
int c,m;
printf("Input words:");

c=1;
while((ch=getchar())!='\n'){
if(ch==' ')
c++;

}
printf("count=%d\n",c);
return 0;
}

但是如果是多个空格就要多统计出单词个数来。。。请教要怎样才能使多个空格只算作一个呢??
===============================================================
还有目前我只学过过------------FOR/WHILE/DO-WHILE3种循环语句 以及IF-ELSE SWITCH……等等 还没学太高深。。诸如“[]”一类的我看不懂的。。。所以请用基础一点的语句。。。。拜谢ORZ

谭浩强C语言书上的例题,虽然那道题目是用数组做的,但是思路还是可以借鉴的。
设置一个标志word,表示单词是否开始。如果一直是空格的话,word=0,一旦看到不是空格,并且word是0,则意味着一个新单词开始,将个数增1并将word置为1。
#include <stdio.h>
main()
{ char c;
int i,num=0,word=0;
while((c=getchar())!='\n')
if(c==' ') word=0;
else if(word==0)
{ word=1; num++; }
printf("There are %d words in the line\n",num);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-15
#include <stdio.h>
int main(void)
{
char ch;
int c,m;
printf("Input words:");

c=1;
m=0;
while((ch=getchar())!='\n')
{
if(ch==' ')
{
if(m==0)
{
c++;
m=m++;
}
else
continue;
}
else
m=0;
}
printf("count=%d\n",c);
return 0;
}
这个程序大概符合你的要求,但是你的程序本来就没有考虑以空格结束的情况,就懒得再改了。
第2个回答  2010-05-15
#include <stdio.h>
int main(void) {
char ch;
int c,m;
printf("Input words:");

c=1;
while((ch=getchar())!='\n') {
while(ch==' '&&ch!='\n') {
ch = getchar();
}
if(ch!='\n') {
c++;
}
}
printf("count=%d\n",c);
return 0;
}

话说这个和 "高深" 没任何关系, 自己想想各种可能情况就行了
第3个回答  2010-05-15
#include<string.h>
#include<stdio.h>
main()
{
char* ch;
int n;
printf("inputnum.\n");
scanf("%s",ch);
n=strlen(ch);
printf("%d",n);
getch();
}
相似回答