华为机试-计票统计(HJ94)-纯C

记票统计

https://www.nowcoder.com/practice/3350d379a5d44054b219de7af6708894?tpId=37&&tqId=21317&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

纯C
这题按要求做就行了,没什么难点。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct Candidate
{
    char * name[20];
    int cnt;
}Candidate;

int main()
{
    int candidates_num = 0, vote_num = 0;
    while(scanf("%d", &candidates_num) != EOF)
    {
        Candidate *candidate = (Candidate *)malloc(sizeof(Candidate) * candidates_num);
        for(int i=0; i<candidates_num; i++)
        {
            scanf("%s", candidate[i].name);
            candidate[i].cnt = 0;
        }
        scanf("%d", &vote_num);
        char temp[20] = {'\0'};     //存储投票
        int invalid = 0;            //统计非法投票人数
        for(int i=0; i<vote_num; i++)
        {
            scanf("%s", temp);
            int flag = 0;
            for(int j=0; j<candidates_num; j++)
            {
                if(strcmp(temp, candidate[j].name) == 0)
                {
                    candidate[j].cnt++;
                    flag = 1;
                }
            }
            if(!flag) invalid++;
        }
        for(int i=0; i<candidates_num; i++)
        {
            printf("%s : %d\n", candidate[i].name, candidate[i].cnt);
        }
        printf("Invalid : %d\n", invalid);
        free(candidate);
    }
    return 0;
}
全部评论
结构体中的“char * name[20];”应该修改为“char name[20];”,否则strcmp()报错:"no known conversion from 'char * [20]' to 'const char * ' for 2nd argument."
点赞 回复 分享
发布于 2020-09-13 09:07
“printf("Invalid : %d\n", invalid);” 改成 “printf("Invalid : %d\n", &invalid);”
点赞 回复 分享
发布于 2020-09-13 09:33

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务