由键盘输入n(n不超过1000)个学生m(m不超过10)门课的成绩,要求(1)将学生按总分由高到低排序,按格式要求输出排序后的结果(一行一个学生信息);(2)输出每一门成绩的平均分,留一位小数。
【第一组自测数据】
【键盘输入】
5 3
90 70 75
89 67 78
87 65 98
97 86 77
88 96 82
【正确输出】
88 96 82
97 86 77
87 65 98
90 70 75
89 67 78
90.2 76.8 82
一、题目与运行说明
称述程序设计的任务,程序的功能是什么?强调的是程序要做什么?并按要求明确说明:
(1)程序中所使用的主要变量
(2)数据输入的形式和输入值的范围
(3)数据输出的形式
(4)程序所能达到的功能及出错处理
二、程序设计思路
说明实现程序的主要思路,要求写出主要的算法,建议画出流程图。
三、程序清单
列出程序,代码中变量定义与重要语句部分加上注释。
发邮箱[email protected]
#include <stdio.h>
typedef struct student
{
int mark[10];
int sum;
}student;
void main()
{
student stu[1000];
student temp;
student avg;
int n, m, i, j;
printf("");
scanf("%d", &n);
printf("");
scanf("%d", &m);
for (i = 0; i != m; ++i)
{
avg.mark[i] = 0;
}
for (i = 0; i != n; ++i)
{
stu[i].sum = 0;
for (j = 0; j != m; ++j)
{
scanf("%d", &(stu[i].mark[j]));
stu[i].sum += stu[i].mark[j];
avg.mark[j] += stu[i].mark[j];
}
}
for (i = 0; i != n; ++i)
{
for (j = i + 1; j != n; ++j)
{
if (stu[i].sum < stu[j].sum)
{
temp = stu[j];
stu[j] = stu[i];
stu[i] = temp;
}
}
}
for (i = 0; i != n; ++i)
{
for (j = 0; j != m; ++j)
{
printf("%d ", stu[i].mark[j]);
}
printf("\n");
}
for (i = 0; i != m; ++i)
{
printf("%.1f ", avg.mark[i] / (float)n);
}
printf("\n");
}
找到了程序,求下面那三个问题的答案。