#include <string.h> struct person { char name[20]; int count; } person leader[3] = {"Li", 0, "Zhang", 0, "Fun", 0}; int main() { int i, j; char leader_name[20]; scanf("%d\n", &n); for (i = 0; i < n; i++) { scanf("%s", leader_name); for (j = 0; j < 3; j++) if (leader_name == leader[j].name) leader[j].count++; } printf("\n"); for (i = 0; i < 3; i++) printf("%5s:%d\n", leader[i].name, leader[i].count); return 0; }
时间: 2023-12-10 14:40:17 浏览: 71
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码有几个问题:
1. 缺少头文件,需要加上 `#include <stdio.h>`
2. 定义结构体时应该加上结构体关键字 `struct`,如 `struct person {...}`
3. 初始化数组时应该使用大括号 `{}` 而不是小括号 `()`
4. 在比较两个字符串是否相等时,不能使用 `==`,应该使用 `strcmp()` 函数
下面是修改后的代码:
```
#include <stdio.h>
#include <string.h>
struct person {
char name[20];
int count;
};
struct person leader[3] = {{"Li", 0}, {"Zhang", 0}, {"Fun", 0}};
int main() {
int n, i, j;
char leader_name[20];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s", leader_name);
for (j = 0; j < 3; j++) {
if (strcmp(leader_name, leader[j].name) == 0) {
leader[j].count++;
break;
}
}
}
printf("\n");
for (i = 0; i < 3; i++) {
printf("%5s:%d\n", leader[i].name, leader[i].count);
}
return 0;
}
```
注意,这个程序仅适用于输入三个领导名字的情况,如果有新的领导加入,需要修改程序中的 `leader` 数组大小和初始化的个数。
阅读全文