学校以下表中前3位同学作为候选人,投票选举1名优秀学生,共有20次投票。请设计程序,根据投票结果,按照得票数从高到低的次序,输出三位学生的得票信息。程序文件名:程序文件名153.c。 学号(num) 姓名(name) 性别(sex) 年龄(age) 成绩(score) 电话(tele) 15010001 LiHua M 19 99 88970001 15010002 WangPing F 20 87 97880026 15010003 ZhangKai M 19 88 90824316 15010004 WuXiao F 20 98 91204638 15020001 HuYue M 19 97 94302618 15020002 LinDaHai M 20 89 95082819
时间: 2024-02-16 19:01:43 浏览: 109
代码如下:
```
#include <stdio.h>
struct Student {
int num;
char name[20];
char sex;
int age;
int score;
char tele[20];
};
int main() {
struct Student students[6] = {
{15010001, "LiHua", 'M', 19, 99, "88970001"},
{15010002, "WangPing", 'F', 20, 87, "97880026"},
{15010003, "ZhangKai", 'M', 19, 88, "90824316"},
{15010004, "WuXiao", 'F', 20, 98, "91204638"},
{15020001, "HuYue", 'M', 19, 97, "94302618"},
{15020002, "LinDaHai", 'M', 20, 89, "95082819"}
};
int votes[6] = {0}; // 初始化每个学生的票数为0
for (int i = 0; i < 20; i++) {
int voteNum;
printf("请输入第%d个选票的学号:", i + 1);
scanf("%d", &voteNum);
for (int j = 0; j < 6; j++) {
if (voteNum == students[j].num) {
votes[j]++;
break;
}
}
}
// 冒泡排序,按得票数从高到低排序
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
if (votes[j] < votes[j + 1]) {
int tempVote = votes[j];
votes[j] = votes[j + 1];
votes[j + 1] = tempVote;
struct Student tempStu = students[j];
students[j] = students[j + 1];
students[j + 1] = tempStu;
}
}
}
printf("得票排名前三名的学生信息如下:\n");
for (int i = 0; i < 3; i++) {
printf("%d %s %c %d %d %s\n", students[i].num, students[i].name, students[i].sex, students[i].age, students[i].score, students[i].tele);
}
return 0;
}
```
程序中先定义了一个名为 `struct Student` 的结构体,用于存储学生的信息。然后定义了一个包含 6 个学生信息的 `students` 数组以及一个包含 6 个元素的 `votes` 数组,`votes` 数组用于存储每个学生的得票数。
接着使用循环输入 20 次选票信息,并根据输入的学号将对应学生的票数加 1。
最后使用冒泡排序按照得票数从高到低排序,然后输出得票排名前三名的学生的信息。
阅读全文