五、投票程序 1、需求分析 实现键盘输入投票人数和投票结果,进行统计时实现排序功能,输出结果。 2、总体设计 该程序可以分为数据输入部分和统计部分。 3、详细设计 采用结构体: Struct { Char code; //代号 Int score; //得分 }Candidates[N]; //候选人结构体数组 这里#define N 3; 采用二维数组,则行方向对应一张投票,列方向对应各候选人得分。 Candidate[M][N]; (1)输入部分 Char tmp[3]; //存放投票的中间变量 输入投票人数n; For(i=0;i<n;++i) //投票 { Scanf(“%s”,tmp); If(tmp[0]==tmp[1]||tmp[1]==tmp[2]||tmp[0]==tmp[2]) Printf(”该票无效!”); Else { Tmp[0]号候选人加5分; Tmp[1]号候选人加3分; Tmp[2]号候选人加2分; } } (2)统计部分 对候选人按照他们的得分排序(冒泡、插入、选择等),然后比较前两名得分是否相同。如果相同,则显示“重新投票”;否则显示三个候选者得分并输出“祝贺X当选冠军”,X为最高分候选者。
时间: 2024-03-25 09:37:50 浏览: 54
该程序实现投票及统计选票并输出
5星 · 资源好评率100%
好的,根据你的需求分析和总体设计,我可以为你提供一份详细设计的代码示例,如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
#define M 100
typedef struct candidate {
char code;
int score;
} Candidate;
int main() {
Candidate candidates[N] = {
{'A', 0},
{'B', 0},
{'C', 0}
};
int votes[M][N] = {0};
int n, i, j;
// 输入部分
printf("Please enter the number of voters: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Please enter the vote for voter %d (e.g. ABC): ", i + 1);
char vote[4];
scanf("%s", vote);
if (strlen(vote) != 3 || vote[0] == vote[1] || vote[1] == vote[2] || vote[0] == vote[2]) {
printf("Invalid vote!\n");
i--;
continue;
}
for (j = 0; j < 3; j++) {
switch (vote[j]) {
case 'A':
candidates[0].score += 5;
break;
case 'B':
candidates[1].score += 3;
break;
case 'C':
candidates[2].score += 2;
break;
default:
break;
}
votes[i][j] = candidates[vote[j] - 'A'].score;
}
}
// 统计部分
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - i - 1; j++) {
if (candidates[j].score < candidates[j + 1].score) {
Candidate temp = candidates[j];
candidates[j] = candidates[j + 1];
candidates[j + 1] = temp;
}
}
}
if (candidates[0].score == candidates[1].score) {
printf("Tie! Please vote again.\n");
} else {
printf("Results:\n");
for (i = 0; i < N; i++) {
printf("%c: %d votes, %.2f%%\n", candidates[i].code, candidates[i].score, (float) candidates[i].score / (float) (n * 10) * 100.0);
}
printf("Congratulations to %c for winning!\n", candidates[0].code);
}
printf("\nVoting results:\n");
for (i = 0; i < n; i++) {
printf("Voter %d: %c(%d), %c(%d), %c(%d)\n", i + 1, 'A', votes[i][0], 'B', votes[i][1], 'C', votes[i][2]);
}
return 0;
}
```
该程序采用了结构体数组来存储候选人信息,二维数组来存储每张投票的结果。在输入部分,程序会检查投票是否合法,如果不合法,则会提示用户重新输入。在统计部分,程序会对候选人得分进行排序,并比较前两名得分是否相同,如果相同,则会提示用户重新投票。最后,程序会输出投票结果和每张投票的结果。
希望这份代码示例可以帮助你完成投票程序课设。
阅读全文