2008
08-01

#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)


求助》有 1 条评论

  1. TONYAZITEN 说:

    貌似有很多不规范的地方:

    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);
    }

     

留下一个回复