...的数据记录,每个记录包括学号、姓名和三门课程的成绩。要求学生记录...
发布网友
发布时间:2023-12-12 19:15
我来回答
共1个回答
热心网友
时间:2024-09-02 12:49
#include <stdio.h>
int main()
{
float a[4][4],sum,d;
int i,j,k,h;
for(i=0;i<4;i++){
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);//这里不能写成scanf("%f",&a);,一维字符数组的输出才是这样的printf("%f",&a);a就是float a[4][4] 你这样写a[ ][3]也要给数据
sum=0;//初始化
j=0;//这个初始化j最好放在for里,好查错
for(;j<3;j++)
sum=sum+a[i][j];
a[i][3]=sum/3;
}//输入成绩和计算出平均值
for(k=0;k<4;k++){//第一行与2 3 4 比与换,第2行与3 4 比与换,第3行与4比与换
h=k+1;
for(;h<4;h++){
if(a[k][3]<a[h][3]){//下一行(h)大于首行(k),上下行互换
j=0;
for(;j<4;j++){
d=a[k][j];
a[k][j]=a[h][j];
a[h][j]=d;//用中介d,实现同一列不同行两个数的互换。
}
}
}
}//比较与排列
i=0;//j=0不能写在这里,如果写在这里的话就相当于赋初值,而不是初始化
for (;i<4;i++){
j=0;//因为是双重循环,所以j=0;初始化应写在循环的上一句。//或者最好这个初始化j最好放在for里,好查错
for(;j<4;j++)
printf("%.0f ",a[i][j]);
printf("\n");
}//输出
return 0;
}