编译出符合全部要求的代码
时间: 2024-03-07 22:48:09 浏览: 72
编译原理实验 杭电 源代码 C++
5星 · 资源好评率100%
好的,以下是符合要求的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student{
char num[10]; // 学号
char name[20]; // 姓名
float c; // C语言成绩
float oop; // 面向对象程序设计成绩
float db; // 数据库成绩
float avg; // 平均成绩
};
struct student wlb[100]; // 存放学生成绩资料的结构体数组
struct student input(){
struct student s;
printf("请输入学号:");
scanf("%s", s.num);
printf("请输入姓名:");
scanf("%s", s.name);
printf("请输入C语言成绩:");
scanf("%f", &s.c);
printf("请输入面向对象程序设计成绩:");
scanf("%f", &s.oop);
printf("请输入数据库成绩:");
scanf("%f", &s.db);
s.avg = (s.c + s.oop + s.db) / 3.0;
return s;
}
void output(int n, struct student *p){
printf("学号\t姓名\tC语言\t面向对象程序设计\t数据库\t平均成绩\n");
for(int i = 0; i < n; i++){
printf("%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", p[i].num, p[i].name, p[i].c, p[i].oop, p[i].db, p[i].avg);
}
}
void sort(int n, struct student *p){
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
if(p[i].avg < p[j].avg){
struct student temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
int main(){
int n;
printf("请输入要录入成绩资料的学生人数:");
scanf("%d", &n);
for(int i = 0; i < n; i++){
wlb[i] = input();
}
sort(n, wlb);
output(n, wlb);
return 0;
}
```
这段代码实现了以下功能:
1. 定义了一个结构体 `student`,用来存放学生的学号、姓名、三门成绩和平均成绩;
2. 定义了一个结构体数组 `wlb`,用来存放多达 100 个学生成绩资料;
3. 定义了一个函数 `input()`,用来输入学生的成绩资料并计算平均成绩;
4. 定义了一个函数 `output()`,用来输出学生的成绩资料(包括学号、姓名、三门成绩和平均成绩);
5. 定义了一个函数 `sort()`,用来对结构体数组进行降序排序,排序依据为结构体数组元素中的平均成绩;
6. 在 `main()` 函数中,通过循环调用 `input()` 函数逐一输入学生成绩资料并保存到结构体数组元素内;
7. 调用 `sort()` 函数对结构体数组进行降序排序;
8. 调用 `output()` 函数显示输出每个学生的成绩资料。
阅读全文