吾家有事情 发表于 2021-11-2 23:29:22

上一个解决了,但是我在里面加了个数字又不会了,大佬看看有什么问题

输入一行字符,分别统计出其中的英文、数字、空格和其他字符个数,中间用空格隔开



#include <stdio.h>
int main()
(
   int a,b,c,d;
   char ch    ;
   for (a=b=c=d=0; (char=getchar()) != '\n';)
   {
           if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch<= 'z')a++;
           else if (ch >= '0' && ch <= '9') b++;
           else if (ch ==' ') c++;
           else d++;
   }
   printf("英文:%d   ,数字:%d   ,空格:%d   ,其他:%d   ", a,b,c,d);
           return 0;
}

jackz007 发表于 2021-11-3 00:00:04

本帖最后由 jackz007 于 2021-11-3 00:05 编辑

   for (a=b=c=d=0; (char=getchar()) != '\n';)// ch 写成了 char
   {
         if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch<= 'z')a++; // 缺少一层右括号
      除了上述两个问题外,代码中还有多处的逗号、括号等使用的是中文字符,从而导致编译错误。
      下面是我修改的代码:
#include <stdio.h>
int main(void)
{
       int a , b , c , d ;
       char ch         ;
       for(a = b = c = d = 0 ; (ch = getchar()) != '\n';)   
       {
               if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))a ++ ;
               else if (ch >= '0' && ch <= '9') b++ ;
               else if (ch == ' ') c ++ ;
               else d ++ ;
       }
       printf("英文:%d   ,数字:%d   ,空格:%d   ,其他:%d" , a , b , c , d) ;
       return 0 ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o xx xx.c

D:\00.Excise\C>xx
qwrreutuGHKWfFtr3%^6586(&DfgtYIjsgtshertxsgtw5yh
英文:38   ,数字:6   ,空格:6   ,其他:4
D:\00.Excise\C>
      编译、运行实况:
页: [1]
查看完整版本: 上一个解决了,但是我在里面加了个数字又不会了,大佬看看有什么问题