求输入字符中的单词个数,为什么第一个循环运行完就停止执行后面的代码了?
#include<stdio.h>#include<stdlib.h>
#define Maxsize 100
int main()
{
int i=0,change=0,pre=0,now=0,num;/*change表示当前字符在空格与字母中发生改变,now表示当前字符是空格与字母中的那种*/
char c,a[Maxsize];
while((c=getchar())!=EOF)
{
a[i]=c;
printf("%C",a[i++]); /*反映a[i]是否赋值*/
}
i=0;
while(a[i]!=-1)
printf("%c",a[i++]);/*检测程序第一次循环后是否继续下一步,是为检测而加上去的*/
i=0;
if(a[i]!='\0')
pre=1;
while(a[i]!=-1)
{
now=(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')?1:0;
change+=pre==now?0:1;
pre=now;
}
printf("共有单词%d个",num=a[0]=='\0'?(change+1)/2:(change+2)/2);
system("pause");
return 0;
}
输入 I am a student!再ctrl+z后回车,输出 I am a student!后就不进行了,请各位再看看,错在哪儿,谢谢!
我发现是哪儿的问题了,我改为
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,change=0,pre=0,now=0,num;
char c;
while((c=getchar())!=EOF)
{
now=(c<='z'&&c>='a'||c<='Z'&&c>='A')?1:0;
change+=(pre==now)?0:1;
pre=now;
}
printf("共有单词%d个",num=(change+1)/2);
system("pause");
return 0;
}
输入I love China!(回车)
I am a chinese!(回车)
ctrl+z(回车)
最后显示为7个,得到了答案,谢谢各位!!
[ 本帖最后由 i_need_to 于 2011-5-15 20:25 编辑 ]