编程统计候选人的得票数。设有3个候选人zhang、li、wang(注意:候选人姓名不区分大小写,输入大写小写都对),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。

编程统计候选人的得票数。设有3个候选人zhang、li、wang(注意:候选人姓名不区分大小写,输入大写小写都对),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。
输入提示信息:"Input vote %d:"
输入格式:"%s"
输出提示信息:
"Election results:\n"
"Wrong election:%d\n"
输出格式:"%8s:%d\n"

程序运行示例:
Input vote 1:li
Input vote 2:li
Input vote 3:zhang
Input vote 4:wang
Input vote 5:wang
Input vote 6:wang
Input vote 7:zhang
Input vote 8:zhang
Input vote 9:li
Input vote 10:li
Election results:
      li:4
   zhang:3
    wang:3
Wrong election:0

#include <stdio.h>
#include <string.h>
#define N 10

typedef struct candidate
{
    char name[N];
    int count;
}CAND;

int main()
{
    CAND cand[N] = {{"li",0},{"zhang",0},{"wang",0}};
    int i,j;
    char name[N];
    int wrong=0;
    int flag;
    for(i=0;i<N;i++)
    {
        flag = 0;
        printf("Input vote %d:",i+1);
        scanf("%s",name);
        for(j=0;j<3;j++)
        {
            if(strcasecmp(cand[j].name,name) == 0)
            {
                cand[j].count++;
                flag = 1;
            }
        }
        if(flag == 0)
        {
            wrong++;
        }
    }
    printf("Election results:\n");
    for(i=0;i<3;i++)
    {
        printf("%8s:%d\n",cand[i].name,cand[i].count);
    }
    printf("Wrong election:%d\n",wrong);
}
 
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用以下代码实现: #include <stdio.h> #include <string.h> #define CANDIDATE_NUM 3 #define VOTER_NUM 10 struct Candidate { char name[10]; int votes; }; int main() { struct Candidate candidate[CANDIDATE_NUM] = { {"zhang", }, {"li", }, {"wang", } }; char vote_name[10]; int invalid_votes = ; printf("请输入10个选民的投票结果:\n"); for (int i = ; i < VOTER_NUM; i++) { printf("第%d个选民的投票结果:", i + 1); scanf("%s", vote_name); if (strcasecmp(vote_name, candidate[].name) == ) { candidate[].votes++; } else if (strcasecmp(vote_name, candidate[1].name) == ) { candidate[1].votes++; } else if (strcasecmp(vote_name, candidate[2].name) == ) { candidate[2].votes++; } else { invalid_votes++; } } printf("\n各候选人得票结果如下:\n"); for (int i = ; i < CANDIDATE_NUM; i++) { printf("%s: %d票\n", candidate[i].name, candidate[i].votes); } printf("废票数:%d\n", invalid_votes); return ; } 程序中使用结构体数组candidate表示3个候选人姓名得票结果。在主函数中,先初始化候选人数组,然后循环读入10个选民的投票结果。使用strcasecmp函数比较输入候选人姓名候选人数组中的姓名,如果相同,则将对应候选人得票数加1;否则,废票数加1。最后输出各候选人得票结果和废票数。 ### 回答2: 下面是一份Python的代码示例,能够实现题目所述的功能: ```python class Candidate: def __init__(self, name): self.name = name self.votes = 0 candidates = [Candidate("zhang"), Candidate("li"), Candidate("wang")] for i in range(10): vote = input("请选民输入候选人姓名:").lower() for candidate in candidates: if candidate.name == vote: candidate.votes += 1 break else: print("废票") print("得票结果:") for candidate in candidates: print(candidate.name, ":", candidate.votes) ``` 在这个代码中,我们定义了一个叫做`Candidate`的类,在初始化的时候设置了候选人姓名得票数属性。我们用一个列表来存储这3个候选人的信息。 然后我们用一个简单的循环来问每个选民输入候选人姓名,并检查这个名字是否匹配之前定义的候选人。如果匹配,我们就增加这个候选人得票数。如果没有匹配,我们就报告这张票是废票。 最后我们输出所以候选人得票结果,包括姓名得票数。 ### 回答3: 题目要求编程统计候选人得票数,首先需要定义一个结构体数组candidate,来表示3个候选人姓名得票结果。 ```c++ struct Candidate { string name; //候选人姓名 int votes; //得票数 } candidate[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}}; //定义结构体数组 ``` 以上定义了一个包含3个元素的结构体数组candidate,每个元素包含一个字符串name表示候选人姓名,和一个整数votes表示候选人得票数,初始值都为0。 然后,需要循环10次,每次从标准输入读入一个字符串,表示选民的投票结果。如果字符串为"zhang"、"li"、"wang"中的一个,就将对应的候选人得票数增加1;如果不是这三个字符串,则将计入废票,不进行统计。 ```c++ for(int i = 1; i <= 10; i++) { string vote; cin >> vote; if(vote == "zhang" || vote == "Zhang") { candidate[0].votes++; } else if(vote == "li" || vote == "Li") { candidate[1].votes++; } else if(vote == "wang" || vote == "Wang") { candidate[2].votes++; } else { cout << "废票" << endl; } } ``` 最后,输出每个候选人得票结果和废票信息。 ```c++ for(int i = 0; i < 3; i++) { cout << candidate[i].name << "得票数:" << candidate[i].votes << endl; } ``` 完整代码如下: ```c++ #include <iostream> using namespace std; struct Candidate { string name; //候选人姓名 int votes; //得票数 } candidate[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}}; //定义结构体数组 int main() { for(int i = 1; i <= 10; i++) { string vote; cin >> vote; if(vote == "zhang" || vote == "Zhang") { candidate[0].votes++; } else if(vote == "li" || vote == "Li") { candidate[1].votes++; } else if(vote == "wang" || vote == "Wang") { candidate[2].votes++; } else { cout << "废票" << endl; } } for(int i = 0; i < 3; i++) { cout << candidate[i].name << "得票数:" << candidate[i].votes << endl; } return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那不勒斯的萤火丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值