某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分) 题目内容: 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数) 输入格式: %ld %s %f %f %f 输出格式: %-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n 输入样例: 201701 zhao 29.8 85.4 65.4 201702 qian 96.5 87.5 65.4 201703 sun 85.4 65.4 84.6 201704 li 63.4 95.4 86.3 201705 zhou 65.9 84.6 97.5 输出样例: Number: Name: score: Average: rank: 201701 zhao 29.8 85.4 65.4 60.2 5 201702 qian 96.5 87.5 65.4 83.1 1 201703 sun 85.4 65.4 84.6 78.5 4 201704 li 63.4 95.4 86.3 81.7 3 201705 zhou 65.9 84.6 97.5 82.7 2 时间限制:500ms内存限制:32000kb
时间: 2023-06-25 17:03:09 浏览: 116
以下是一个简单的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define N 5
// 定义学生信息结构体
typedef struct {
long num;
char name[20];
float score[3];
float ave;
int rank;
} student;
// 计算每名学生的平均成绩
void average(student *stu) {
int i;
for (i = 0; i < N; i++) {
stu[i].ave = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
}
// 计算每名学生的名次
void ranking(student *stu) {
int i, j;
student temp;
for (i = 0; i < N; i++) {
stu[i].rank = 1;
for (j = 0; j < N; j++) {
if (stu[j].ave > stu[i].ave) {
stu[i].rank++;
}
}
}
}
// 输出每名学生的信息
void output(student *stu) {
int i;
printf("Number:\tName:\t\tscore:\t\tAverage:\trank:\n");
for (i = 0; i < N; i++) {
printf("%-9ld%-10s%-5.1f%-5.1f%-5.1f\t%-10.1f%-d\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave, stu[i].rank);
}
}
int main() {
student stu[N];
int i;
for (i = 0; i < N; i++) {
scanf("%ld %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
average(stu);
ranking(stu);
output(stu);
return 0;
}
```
输入格式为每个学生的学号、姓名、三门课程的成绩,分别用空格隔开,循环读入5次。然后调用 `average()` 函数计算每名学生的平均成绩,再调用 `ranking()` 函数计算每名学生的名次,最后调用 `output()` 函数输出每名学生的信息。