编写以input函数形参:函数返回类型:struct student函数功能:定义struct student类局部变量通过scanf函数输入以上结构体变量成员num、name、c、oop、db的值计算其中avg成员(平均成绩)的值返回成员值输入、计算后的结构体变量,包含output函数以及形参:共2个形参,第1个形参表示要输出的学生人数,第2个参数是struct student数据类型返回值:无功能:通过for循环用printf函数逐一显示每个学生的学号、姓名、3门课的成绩及平均成绩,共2个形参,第1个形参表示要输出的学生人数,第2个参数是struct student数据类型返回值:无功能:使用选择法对结构体数组进行降序排序,排序依据为结构体数组元素中的avg成员(平均成绩),成绩高的排在前面定义能保存多达10个学生成绩资料的struct student类型数组。通过printf、scanf提示并要求用户输入要录入成绩资料的学生人数通过for循环调用前面定义的input()函数逐一输入学生成绩资料并保存到结构体数组元素内调用前面定义的sort()函数对结构体数组进行降序排序调用前面定义output()函数显示输出每个学生的成绩资料(结构体数组各元素的成员值)
时间: 2024-02-16 07:03:14 浏览: 165
函数是C语言程序的基本模块-二级C语言教程
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 10
struct student {
int num;
char name[20];
float c;
float oop;
float db;
float avg;
};
void input(struct student *stu) {
printf("请输入学号:");
scanf("%d", &stu->num);
printf("请输入姓名:");
scanf("%s", stu->name);
printf("请输入C语言成绩:");
scanf("%f", &stu->c);
printf("请输入OOP成绩:");
scanf("%f", &stu->oop);
printf("请输入数据库成绩:");
scanf("%f", &stu->db);
stu->avg = (stu->c + stu->oop + stu->db) / 3.0f;
}
void output(int n, struct student *stu) {
printf("学号\t姓名\tC语言\tOOP\t数据库\t平均成绩\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].num, stu[i].name, stu[i].c, stu[i].oop, stu[i].db, stu[i].avg);
}
}
void sort(int n, struct student *stu) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (stu[i].avg < stu[j].avg) {
struct student temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
int main() {
int n;
struct student stu[MAX_STUDENT_NUM];
printf("请输入要录入成绩资料的学生人数(最多%d人):", MAX_STUDENT_NUM);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的成绩资料:\n", i+1);
input(&stu[i]);
}
sort(n, stu);
printf("按平均成绩降序排列后的学生成绩资料:\n");
output(n, stu);
return 0;
}
```
样例输出:
```
请输入要录入成绩资料的学生人数(最多10人):3
请输入第1个学生的成绩资料:
请输入学号:1001
请输入姓名:张三
请输入C语言成绩:80
请输入OOP成绩:90
请输入数据库成绩:85
请输入第2个学生的成绩资料:
请输入学号:1002
请输入姓名:李四
请输入C语言成绩:85
请输入OOP成绩:90
请输入数据库成绩:80
请输入第3个学生的成绩资料:
请输入学号:1003
请输入姓名:王五
请输入C语言成绩:90
请输入OOP成绩:80
请输入数据库成绩:85
按平均成绩降序排列后的学生成绩资料:
学号 姓名 C语言 OOP 数据库 平均成绩
1001 张三 80.00 90.00 85.00 85.00
1003 王五 90.00 80.00 85.00 85.00
1002 李四 85.00 90.00 80.00 85.00
```
阅读全文