5.要求将6个人的4门课成绩存放在一个结构数据(structure)中,结构中包含姓名、学号、科目名称和对应分数等域名,可以根据需要自由设计结构域名并随机产生分数的值。最后计算每科的平均成绩,并按分数高低进行排名。 (利用help使用:sort()为排序函数;mean()为求平均值函数)
时间: 2024-02-22 12:01:14 浏览: 81
好的,我可以帮您解答这个问题。首先,我们可以定义一个结构体来存储每个人的成绩信息,结构体中包含姓名、学号、科目名称和对应分数等域名。例如:
```
struct student {
char name[20];
char id[10];
char course[20];
float score;
};
```
然后,我们可以定义一个数组,用来存储这6个人的成绩信息:
```
struct student scores[6];
```
接下来,我们可以使用随机数生成函数来随机产生每个人的分数。例如,使用rand()函数来生成一个0到100之间的随机整数,然后将其转化为0到1之间的浮点数,并乘以100得到分数:
```
for (int i = 0; i < 6; i++) {
sprintf(scores[i].name, "Student %d", i+1);
sprintf(scores[i].id, "ID%d", i+1);
sprintf(scores[i].course, "Course %d", i%4+1);
scores[i].score = (float)rand() / RAND_MAX * 100;
}
```
接下来,我们可以计算每科的平均成绩。可以使用一个数组来记录每门课的总成绩和人数,然后再除以人数得到平均成绩:
```
float total[4] = {0};
int count[4] = {0};
for (int i = 0; i < 6; i++) {
int index = i % 4;
total[index] += scores[i].score;
count[index]++;
}
float avg[4] = {0};
for (int i = 0; i < 4; i++) {
avg[i] = total[i] / count[i];
}
```
最后,我们可以使用sort()函数对分数进行排序,并输出每个人的排名和成绩:
```
sort(scores, scores+6, [](const student& a, const student& b){return a.score > b.score;});
for (int i = 0; i < 6; i++) {
printf("%d. %s (%s) %s: %.2f\n", i+1, scores[i].name, scores[i].id, scores[i].course, scores[i].score);
}
```
完整代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
struct student {
char name[20];
char id[10];
char course[20];
float score;
};
int main() {
struct student scores[6];
for (int i = 0; i < 6; i++) {
sprintf(scores[i].name, "Student %d", i+1);
sprintf(scores[i].id, "ID%d", i+1);
sprintf(scores[i].course, "Course %d", i%4+1);
scores[i].score = (float)rand() / RAND_MAX * 100;
}
float total[4] = {0};
int count[4] = {0};
for (int i = 0; i < 6; i++) {
int index = i % 4;
total[index] += scores[i].score;
count[index]++;
}
float avg[4] = {0};
for (int i = 0; i < 4; i++) {
avg[i] = total[i] / count[i];
}
sort(scores, scores+6, [](const student& a, const student& b){return a.score > b.score;});
for (int i = 0; i < 6; i++) {
printf("%d. %s (%s) %s: %.2f\n", i+1, scores[i].name, scores[i].id, scores[i].course, scores[i].score);
}
for (int i = 0; i < 4; i++) {
printf("Course %d average score: %.2f\n", i+1, avg[i]);
}
return 0;
}
```
阅读全文