思路
注意: 输出时,分号使用中文,最好直接赋值,虽然输出数字一致,但是字符串会和答案不匹配
- 创建存储名字和票数的结构体
- 获得候选人和投票的数据
- 循环比较候选人和投票人的名字是否一致,一致则将票数加1
- 同时减少1个投票人数,剩余的则为不匹配的人数量
- 按照题目要求输出结果
Answer
#include<stdio.h>
#include<string.h>
struct {
char strName[200];
int num;
} data[200], str2[200];
int main() {
int num, cnt;
scanf("%d", &num);
for (int i = 0; i < num; i++) {
scanf("%s", data[i].strName); //存候选人名字
}
scanf("%d", &cnt);
for (int i = 0; i < cnt; i++) {
scanf("%s", str2[i].strName); //存候选人名字
}
// 在投票中找和候选人相同的名字计数
for (int i = 0; i < num; i++) {
data[i].num = 0;
}
int len=cnt;
for (int i = 0; i < num; i++) {
for (int j = 0; j < cnt; j++) {
if (strcmp(str2[j].strName, data[i].strName) == 0) {
data[i].num++;
len--;
}
}
}
for (int i = 0; i < num; i++) {
//输出有效票数
printf("%s : %d\n",data[i].strName,data[i].num);
}
printf("Invalid : %d\n",len);
return 0;
}