1.头文件student.h
#pragma once
#include<stdio.h>
#include<string.h>
#define Maxsize 50
struct student
{
int num;
char name[10];
int a, b, c;
double ave;
};
2.输入输出
#define _CRT_SECURE_NO_WARNINGS
#include"student.h"
extern Count;
void new_student(struct student students [])//输入学生信息
{
int i, n;
if (Count == Maxsize) {
printf("The array is full!\n");
return;
}
printf("请输入学生个数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入学生学号:");
scanf("%d", &students[i].num);
printf("请输入学生姓名:");
scanf("%s", students[i].name);
printf("请输入学生a的成绩:");
scanf("%d", &students[i].a);
printf("请输入学生b的成绩:");
scanf("%d", &students[i].b);
printf("请输入学生c的成绩:");
scanf("%d", &students[i].c);
Count++;
}
}
void output_student(struct student students[])
{
int i;
if (Count == 0)
{
printf("没有学生!\n");
return;
}
printf("学生信息:\n");
for (i = 0; i < Count; i++) {
printf("第%d个学生信息为:", i + 1);
printf("%d %s %d %d %d %.2f\n", students[i].num, students[i].name, students[i].a, students[i].b, students[i].c,students[i].ave);
}
}
3.计算排序
#define _CRT_SECURE_NO_WARNINGS
#include"student.h"
extern Count;
void ave(struct student s[])//计算平均分
{
int i;
for (i = 0; i < Count; i++) {
s[i].ave = (s[i].a + s[i].b + s[i].c) / 3.0;
}
}
void sort(struct student s[])//排序后成绩
{
struct student temp;
int i, index, j;
for (i = 0; i < Count - 1; i++) {
index = i;
for (j = i + 1; j < Count; j++) {
if (s[j].ave > s[index].ave)
index = j;
}
temp = s[index];
s[index] = s[i];
s[i] = temp;
}
}
4.查询修改
#define _CRT_SECURE_NO_WARNINGS
#include"student.h"
extern Count;
void modify(struct student* p)//修改学生信息
{
int num, course, score, i;
printf("请输入待修改学生信息:\n");
printf("请输入学号:");
scanf("%d", &num);
printf("请输入课程选择a-1,b-2,c-3 :");
scanf("%d", &course);
printf("分数为:");
scanf("%d", &score);
for (i = 0; i < Count; i++, p++)
{
if (p->num == num)
break;
}
if (i < Count) {
switch (course) {
case 1:p->a = score; break;
case 2:p->b = score; break;
case 3:p->c = score; break;
}
}
}
void serach_studdent(struct student students[], int num)
{
int i, flag = 0;
if (Count == 0) {
printf("没有学生信息\n");
return;
}
for (i = 0; i < Count; i++) {
if (students[i].num = =num) {
flag = 1;
break;
}
}
if (flag) {
printf("学生信息为\n");
printf("%d %s %d %d %d %.2f", students[i].num, students[i].name, students[i].a, students[i].b, students[i].c, students[i].ave);
}
else {
printf("Not Found");
}
}
5.主函数
#define _CRT_SECURE_NO_WARNINGS
#include"student.h"
#include"aver_sort.c"
#include"input_output.c"
#include"modify.c"
int Count = 0;
int main()
{
struct student students[Maxsize];
new_student(students);//输入学生信息
ave(students);//计算平均分
output_student(students);//输出学生信息
sort(students);//排序
output_student(students);//显示排序好的学生信息
modify(students);//修改指定输入学生信息
ave(students);//计算平均分
sort(students);//排序
output_student(students);//显示修改后的学生信息
return 0;
}