C语言代码-学生信息排序
问题描述
学生信息由学号,姓名,性别,语文成绩,数学成绩,英语成绩,平均分和总分构成。
学号、姓名长度不超过20,学生人数不超过100。
写一个处理学生信息的程序,要求有以下功能
1)插入学生信息,命令格式如下:
INSERT id name sex s1 s2 s3
表示插入一个学生信息。
插入后显示插入的学生信息,格式如下:
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
中间有一个空格分开,所有成绩保留2位小数。
2)显示所有学生信息,命令格式如下:
LIST
按照学号从小到大的顺序显示所有学生信息。每个学生信息一行,格式如下
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
中间有一个空格分开,所有成绩保留2位小数。
3)退出程序,命令格式如下:
QUIT
输出"Good bye!"后结束程序。
写一个程序完成上述功能。
输入的最后一条命令总是QUIT
设计一个结构体表示学生信息。
分别设计两个函数,来处理学生信息的插入与输出。
设计一个函数对所有学生信息按学号进行排序。
再设计一个函数输出所有学生信息。在主函数中调用插入学生信息与显示所有学生信息的函数。
输入
输入有多行,每行一条命令,命令格式有:
INSERT id name sex s1 s2 s3
插入一条学生信息后并显示插入的学生信息。
LIST
按照学号从小到大的顺序显示所有学生信息。每个学生信息一行,
QUIT
退出程序
输出
输出有多行,每个输入命令都有对应的输出,格式分别如下:
INSERT id name sex s1 s2 s3
插入后显示插入的学生信息,格式如下:
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
中间有一个空格分开,所有成绩保留2位小数。
LIST
按照学号从小到大的顺序显示所有学生信息,每个学生信息一行。每行格式如下:
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
中间有一个空格分开,所有成绩保留2位小数。
QUIT
输出"Good bye!"后结束程序。
输入样列
INSERT 09001 zhanghong F 78 82 87.5
INSERT 09003 lisi M 68 62 67.5
LIST
INSERT 09002 wangwu M 78 72 77.5
LIST
QUIT
输出样例
09001 zhanghong F 78.00 82.00 87.50 82.50 247.50
09003 lisi M 68.00 62.00 67.50 65.83 197.50
09001 zhanghong F 78.00 82.00 87.50 82.50 247.50
09003 lisi M 68.00 62.00 67.50 65.83 197.50
09002 wangwu M 78.00 72.00 77.50 75.83 227.50
09001 zhanghong F 78.00 82.00 87.50 82.50 247.50
09002 wangwu M 78.00 72.00 77.50 75.83 227.50
09003 lisi M 68.00 62.00 67.50 65.83 197.50
Good bye!
#include
#include
struct student
{
char id[25],nam[25],sex[2];
double s1,s2,s3,pj,zf;
}x[105];
student INSERT()
{
student x;
scanf("%s%s%s%lf%lf%lf",x.id,x.nam,x.sex,&x.s1,&x.s2,&x.s3);
x.zf=x.s1+x.s2+x.s3;
x.pj=x.zf/3;
printf("%s %s %s %.2f %.2f %.2f %.2f %.2f\n",x.id,x.nam,x.sex,x.s1,x.s2,x.s3,x.pj,x.zf);
return x;
}
void LIST(student x[],int n)
{
int i,j;
student temp;
for(i=0;i
{
for(j=0;j