求C语言习题答案~~急

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:52:13
C语言程序设计综合练习
编一个统计班级学生成绩的程序,要求如下:
班级人数由用户从键盘输入(30人以内)。
表头标题:学生成绩统计表。
数据项标题:姓名、数学、语文、外语、化学、平均分。
各条记录从键盘交互输入。输入数据后,在屏幕输出上述信息,表格行列分明排列整齐。
通过函数调用方式,计算每个学生的平均分。
对表格数据按平均分从高到低排序。(注意:排序后各相关数据也要相应移动)
计算每门课程的平均分。
输出最终表格数据,表格形式如下:
学生成绩统计表

姓名 数学 语文 外语 化学 平均分
黎明
王洪
刘芳

各科平均分
有表格

写出编程思路,随程序一同提交,要求如下:
a) 数据结构的实现方法,b) 例如:用几个数组实现、用结构体实现、用数组和结构体实现等,c) 写出所用数组、结构体的名d) 称和含义。
e) 使用的是哪一种排序算法。
f) 如何实现排序后各相关数据的相应移动。

#include<stdio.h>
#define N 30
struct student
{
char name[8];
float score[4],ave,sum;
};
void main()
{
float avef(float a[],int n);
float pjf(struct student c[],int n,int m);
int a,i,j;
float b[4];
struct student st[N],t;
printf("请输入学生个数(学生个数必须小于等于30):");
scanf("%d",&a);
if(a>=N||a<1)
{
printf("你的输入不正确\n");
exit(0);
}
printf("请按以下格式输入学生的信息(姓名 数学 语文 外语 化学)\n");
for(i=0;i<a;i++)
{
printf("请输入第%2d个学生的信息:",i+1);
scanf("%s%f%f%f%f",st[i].name,&st[i].score[0],&st[i].score[1],&st[i].score[2],&st[i].score[3]);
st[i].ave=avef(st[i].score,4);
}
for(i=0;i<a-1;i++)
for(j=0;j<a-i-1;j++)
if(st[j].ave<st[j+1].ave)
{
t=st[j];
st[j]=st[j+1];
st[j+1]=t;
}
printf("姓 名 数学 语文 外