|
发表于 2023-11-2 11:16:05
|
显示全部楼层
在这个代码中,有以下几个问题:
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;
- }
复制代码
在修改代码时,建议注意代码的格式和排版,以方便阅读和维护。同时,应该多进行代码测试和调试,以确保代码的正确性。
球一个最佳答案谢谢啦!这对我非常重要!   |
|