#include<stdio.h>
void main()
{char ch;
int m=0,n=0,w=0;
printf(“请输入一行字符:\n”);
while(ch=getchar()!=’\n’)
{if((getchar()>=’A')&&(getchar()<=’Z'))||((getchar()>=’a')&&(getchar()<=’z'))
m++;
putchar(getchar());
if((getchar()>=’0′)&&(getchar()<=’9′))
n++;
scanf(“%d”,getchar());
else
w++;
putchar(getchar());
printf(“数字个数:%d,字母个数:%d,其他字符个数:%d”,m,n,w);
}
}
运行后出现以下情况是怎么回事啊
Compiling…
6.cpp
F:\编程工具\Debug\6.cpp(7) : error C2143: syntax error : missing ‘;’ before ‘||’
F:\编程工具\Debug\6.cpp(13) : error C2181: illegal else without matching if
Error executing cl.exe.
6.obj – 2 error(s), 0 warning(s)
>> 本文固定链接: http://www.vcgood.com/archives/2576
貌似有很多不规范的地方:
1.while(ch=getchar()!=’\n’)应写成while((ch=getchar())!=’\n’)
2.if((getchar()>=’A')&&(getchar()<=’Z'))||((getchar()>=’a')&&(getchar()<=’z'))
应写成if(ch>=’A'&&ch<=’Z'||ch>=’a'&&ch<=’z')
3. if((getchar()>=’0′)&&(getchar()<=’9′))应写成else if((getchar()>=’0′)&&(getchar()<=’9′)),否则字母会在下面的其他字符中多算一次。
4.只所以出现illegal else without matching if是因为跟else紧邻的if有超过一句的语句而你没有加花括号引起,加上就好了。
还有就是你的代码中用了很多putchar(),我没猜错的话你是想在计算字数的同时把字符归类然后再打印出来,但是如果按你的代码来运行只是把输入的字符又按顺序打了一遍,并没有归类。对于这点鉴于我也是才开始学c,也不知道怎么解决,还请多多指教。下面是我按你的程序从写的一个,没有归类功能。
#include<stdio.h>
void main()
{
int m=0,n=0,w=0,l,d,o,ch;
printf(“Please input:\n”);
while((ch=getchar())!=’\n’)
{if(ch>=’A'&&ch<=’Z'||ch>=’a'&&ch<=’z')
{m++;
putchar(ch);}
else if(ch>=’0′&&ch<=’9′)
{n++;
putchar(ch);}
else
{w++;
putchar(ch);}
}
printf(“digit:%d,letter:%d,other:%d\n”,n,m,w);
}