在这个代码中,有以下几个问题:
1. 在 switch 语句中,使用 getchar() 函数获取字符,但是没有将获取的字符与具体的值进行比较。实际上,应该将 getchar() 函数的返回值赋值给一个变量,并将变量与具体的值进行比较。
2. 在 scanf("%s", &a) 中,&a 应该改为 a。因为 a 已经是一个指针了,不需要再取地址。
3. 在最后的输出中,应该使用空格分隔数字,而不是连接起来。
下面是修改后的代码:#include <stdio.h>int main() { int n, m; scanf("%d", &n); char a[n + 1]; scanf("%s", a); int eng = 0, spa = 0, num = 0, oth = 0; for (m = 1; m <= n; m++) { char c = getchar(); switch (c) { case ' ': case '\r': spa++; break; case 'A'...'Z': case 'a'...'z': eng++; break; case '0'...'9': num++; break; default: oth++; break; } } printf("%d %d %d %d\n", eng, spa, num, oth); return 0;}
在修改代码时,建议注意代码的格式和排版,以方便阅读和维护。同时,应该多进行代码测试和调试,以确保代码的正确性。
球一个最佳答案谢谢啦!这对我非常重要!   |