c语言学习之结构篇代码示例-输入n个同学的姓名,数学英语成绩,按照平均分从低到高排序并输出

这篇博客介绍如何使用C语言创建结构体来存储学生姓名、数学和英语成绩,并按平均分进行降序排序。内容包括结构体定义、输入学生信息以及实现排序的算法。
摘要由CSDN通过智能技术生成
#include<stdio.h>
void main(){

const int count = 5;//定义数量
struct student{
char name[80];
float math,eng;
float aver;

}stu[count],temp;

//输入

for (int i = 0; i < count; i++){
scanf("%s%f%f", stu[i].name, &stu[i].math, &stu[i].eng);
}
//将平均值放入进去
for (int i = 0; i < count; i++){
stu[i].aver =
好的,下面是一个简单的学生信息库系统的分模块设计和C语言代码示例: 1. 建立学生基本信息模块 该模块用于输入学生的基本信息,包括学生姓名、学号、性别、年龄等。 ```c #include <stdio.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 最大学生数量 struct student { char name[20]; int id; char gender; int age; }; struct student students[MAX_STUDENT_NUM]; // 定义学生数组 int student_num = 0; // 当前学生数量 void add_student() { struct student new_student; printf("请输入学生姓名:"); scanf("%s", new_student.name); printf("请输入学号:"); scanf("%d", &new_student.id); printf("请输入性别(男/女):"); scanf(" %c", &new_student.gender); printf("请输入年龄:"); scanf("%d", &new_student.age); students[student_num++] = new_student; } ``` 2. 计算学生成绩模块 该模块用于计算学生的平均成绩。 ```c struct score { int math; int english; int physics; }; struct score scores[MAX_STUDENT_NUM]; // 定义成绩数组 void add_score() { int id; printf("请输入学号:"); scanf("%d", &id); int index = -1; for (int i = 0; i < student_num; i++) { if (students[i].id == id) { index = i; break; } } if (index == -1) { printf("未找到该学生\n"); return; } struct score new_score; printf("请输入数学成绩:"); scanf("%d", &new_score.math); printf("请输入英语成绩:"); scanf("%d", &new_score.english); printf("请输入物理成绩:"); scanf("%d", &new_score.physics); scores[index] = new_score; } double get_average_score(int index) { double sum = scores[index].math + scores[index].english + scores[index].physics; return sum / 3; } ``` 3. 排序和查询模块 该模块用于按照学生的平均成绩排序并查询学生信息。 ```c void sort_students_by_score() { for (int i = 0; i < student_num - 1; i++) { for (int j = i + 1; j < student_num; j++) { double score1 = get_average_score(i); double score2 = get_average_score(j); if (score1 < score2) { struct student temp_student = students[i]; students[i] = students[j]; students[j] = temp_student; struct score temp_score = scores[i]; scores[i] = scores[j]; scores[j] = temp_score; } } } } void query_student_info() { int id; printf("请输入学号:"); scanf("%d", &id); int index = -1; for (int i = 0; i < student_num; i++) { if (students[i].id == id) { index = i; break; } } if (index == -1) { printf("未找到该学生\n"); return; } printf("姓名:%s\n", students[index].name); printf("学号:%d\n", students[index].id); printf("性别:%c\n", students[index].gender); printf("年龄:%d\n", students[index].age); printf("数学成绩:%d\n", scores[index].math); printf("英语成绩:%d\n", scores[index].english); printf("物理成绩:%d\n", scores[index].physics); } ``` 4. 修改学生成绩模块 该模块用于修改学生的成绩。 ```c void modify_score() { int id; printf("请输入学号:"); scanf("%d", &id); int index = -1; for (int i = 0; i < student_num; i++) { if (students[i].id == id) { index = i; break; } } if (index == -1) { printf("未找到该学生\n"); return; } printf("请输入数学成绩:"); scanf("%d", &scores[index].math); printf("请输入英语成绩:"); scanf("%d", &scores[index].english); printf("请输入物理成绩:"); scanf("%d", &scores[index].physics); } ``` 完整代码示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值