题目及要求
题目:某班有三位同学,每位同学都有五门学科随机输入每位同学中每门学科的成绩,要求每位同学的所有学科平均分从低到高排序求出每位同学的平均成绩后,再进行判断该同学的平均成绩是否达到及格。及格的同学附上:做得不错,继续努力!(自定义)不及格的同学附上:还差一点点,继续加油哦!(自定义)
要求每个同学的信息一起输出例:
A成绩XXXXX总分:XX平均分:20不及格
B成绩XXXXX总分:XX平均分:70及格
C成绩XXXXX总分:XX平均分:80及格
设计思路
1.定义一个二维数组;
2.用循环输入数组元素;
3.冒泡排序(将成绩从低到高排序);
4.用循环计算总分及平均分并输出结果。
代码
#include<stdio.h>
#include<stdlib.h>
void main(void) {
int a[3][5];//定义二维数组
int i, j, k, temp;
double sum=0;
float avg=0;
printf("请分别输入3个同学5科成绩:\n"); //利用循环输入二维数组元素
for (k = 0; k<3; k++)
for (i = 0; i<5; i++)
scanf("%d", &a[k][i]);
//冒泡排序(将成绩从低到高排序)
for (k = 0; k < 3; k++)
{
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5 - 1 - i; j++)
{
if (a[k][j] > a[k][j + 1])
{
temp = a[k][j + 1];
a[k][j + 1] = a[k][j];
a[k][j] = temp;
}
}
}
}
for (i = 0; i < 3; i++) //输出排序结果 ,并利用循环求出总分及平均分
{
int sum=0;
printf("第%d个同学的成绩:",i+1);
for (j = 0; j < 5; j++)
{
printf("%4d\t",a[i][j]);
sum=sum+a[i][j];
}
printf("总分:%d\t",sum);
int avg=sum/5;
printf("平均分:%d\t",avg);
if(avg<60)//判断成绩是否及格
printf("不及格,还差一点点,继续加油哦!");
else printf("成绩及格,做的不错,继续努力!");
printf("\n");
}
}
运行结果
运行结果:学生的成绩是按照从小到大排序。
如果写得不清楚的欢迎评论区交流;有可以优化的地方欢迎大佬指教指教。