解答:
#include <stdio.h>
#include <string.h>
struct person {
char name[20];
int count;
}leader[3] = {"Li", 0, "Zhang", 0, "Fun", 0}; //初始化三个结构体变量
int main() {
int total_count;
scanf("%d", &total_count);
getchar(); //吸收结束scanf输入的换行符
for(int i=0; i<=total_count-1; i++) {
char s[10];
gets(s);
if(!strcmp(s,"Li"))
leader[0].count++;
else if(!strcmp(s,"Zhang"))
leader[1].count++;
else if(!strcmp(s,"Fun"))
leader[2].count++;
}
printf("Li:%d\n", leader[0].count);
printf("Zhang:%d\n", leader[1].count);
printf("Fun:%d\n", leader[2].count);
return 0;
}
总结:
- leader[3] = {"Li", 0, "Zhang", 0, "Fun", 0};的结构体数组初始化方法书中似乎没有提到。
- switch参数只能是整型,字符型,枚举型。
- 书中P49:scanf后使用gets需要在中间加一个getchar吸收前面的换行符。