一直段错误,调试了好久,原来是用单个字符变量接收了字符串导致的,改成字符数组就OK了,题目不难,逻辑很简单:
#include<stdio.h>
#include<string.h>
int main(){
int n,m; //n候选人数, m投票总数
int record[101]={0}; //某候选人对应的得票数
char vote[20]; //投票字符串
char name[101][20]={'\0'}; //候选人名字字符串
while(~scanf("%d",&n)){
int invalid_vote=0; //无效票数
for(int i=0;i<n;i++)
scanf("%s",&name[i]);
scanf("%d",&m);
for(int i=0;i<m;i++){
scanf("%s",&vote);
int j,mark=0;
for(j=0;j<n;j++){
// 注意strcmp(str1,str2)字符串比较函数 若两串相等返回的是0
if(!strcmp(name[j],vote)){
mark=1;
record[j]++;
break;
}
}
if(mark==0)
invalid_vote++;
}
for(int i=0;i<n;i++){
printf("%s : %d\n",name[i],record[i]);
}
printf("Invalid : %d\n",invalid_vote);
}
}