20.编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序

20.编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。#include"stdio.h"
#include"string.h"
char* toLower(char *p)
int i;
for(i=0; i < strlen§; i+ +)
if (p[i] >= ‘A’ && p[i] <= ‘Z’)
p[i] += 32;
return p;
struct person
char name[20];
int count;
]candidate [3]=([“zhang”,0,(“li”,0,t"wang",0]];
int main()
int i,j.other=0;
char abc[20];
int count=0;
for(i=0;i<10;i++)
scanf("%s",abc);
for(j=0:j<3;j++)//判断是选的谁
if(strcmp(toLower(abc), candidate [i].name)==0)
candidate [j].count++;)
other=10- candidate [0].count- candidate [1].count- candidate [2].count;
printf("%7s %s\n",“name”,“count”);
for(j=0;j<3;j++)
printf("%7s %d\n",candidate [i].name, candidate [i].count);
printf(“invalid %d”,other);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 C 语言程序,实现了统计候选人得票数的功能,同时将结果保存到文本文件中。 ```c #include <stdio.h> #include <string.h> #define MAX_CANDIDATES 3 #define MAX_VOTERS 10 struct candidate { char name[20]; int votes; }; int main() { struct candidate candidates[MAX_CANDIDATES] = { {"zhang", 0}, {"li", 0}, {"wang", 0} }; int invalid_votes = 0; for (int i = 0; i < MAX_VOTERS; i++) { char input[20]; printf("Voter %d, please enter your vote: ", i+1); scanf("%s", input); // convert name to lowercase for (int j = 0; j < strlen(input); j++) { input[j] = tolower(input[j]); } // check if name is valid int valid = 0; for (int j = 0; j < MAX_CANDIDATES; j++) { if (strcmp(input, candidates[j].name) == 0) { candidates[j].votes++; valid = 1; break; } } if (!valid) { invalid_votes++; } } // output results to console and file printf("Results:\n"); FILE *fp = fopen("results.txt", "w"); for (int i = 0; i < MAX_CANDIDATES; i++) { printf("%s: %d votes\n", candidates[i].name, candidates[i].votes); fprintf(fp, "%s: %d votes\n", candidates[i].name, candidates[i].votes); } printf("Invalid votes: %d\n", invalid_votes); fprintf(fp, "Invalid votes: %d\n", invalid_votes); fclose(fp); return 0; } ``` 程序首先定义了一个结构体 `candidate`,其中包含候选人姓名得票数两个成员变量。然后定义了一个长度为 `MAX_CANDIDATES` 的结构体数组 `candidates`,用于存储三个候选人的信息。 程序通过一个 for 循环,模拟了 10 个选民投票过程。每个选民输入一个候选人名字程序首先将名字转换为小写字母,然后遍历候选人数组,查找是否有与输入名字匹配的候选人。如果匹配成功,则将对应候选人得票数加一;否则,废票数加一。 投票结束后,程序将结果输出到控制台和文件中。输出的格式为“候选人姓名: 得票数”,并在最后输出废票数。 程序的输出效果如下: ``` Voter 1, please enter your vote: zhang Voter 2, please enter your vote: Zhang Voter 3, please enter your vote: Li Voter 4, please enter your vote: wang Voter 5, please enter your vote: WANG Voter 6, please enter your vote: ZHANG Voter 7, please enter your vote: Zhang Voter 8, please enter your vote: Li Voter 9, please enter your vote: Li Voter 10, please enter your vote: John Results: zhang: 3 votes li: 3 votes wang: 1 votes Invalid votes: 3 ``` 同时,程序将结果写入了名为 `results.txt` 的文本文件中。文件内容如下: ``` zhang: 3 votes li: 3 votes wang: 1 votes Invalid votes: 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值