有六个同学,有五门课分别是高等数学、离散数学、程序设计、大学物理、大学英语
第一个同学的成绩为{72,86,87,97,45},第二个同学的成绩为{53,76,98,58,84},
第三个同学的成绩为{83,89,75,84,47},第四个同学的成绩为{35,59,47,83,49},
第五个同学的成绩为{64,76,87,83,36},第六个同学的成绩为{87,89,96,65,58}。
设计一个程序求出五门课程的每门成绩总分,并从高到低依次输出每个学生的平均分
遇到的问题:
1.按列求和,即求每门课总成绩时需要交换ij
2.最后输出的平均分其实不太精确
3.还可以用结构体实现
#includeint main(void){ int score[6][5]={{72,86,87,97,45},{53,76,98,58,84},{83,89,75,84,47},{35,59,47,83,49},{64,76,87,83,36},{87,89,96,65,58}}; int sum; //每门课程的总分 int i,j; float s[6]={0}; //每个学生的成绩 for(i=0;i<5;i++){ //按列求和 ,即每门课程总分 for(j=0;j<6;j++){ //交换ij sum+=score[j][i]; } printf("sum of corse%d:%dn",i+1,sum); sum=0; } for(i=0;i<6;i++){ //按行求和 ,即每个学生成绩 for(j=0;j<5;j++){ s[i]+=score[i][j]; } printf("%f ",s[i]); s[i]=s[i]/5.00; //求平均分 } int temp; for(i=0;i<5;i++){ //冒泡排序 for(j=0;j<5-i;j++){ if (s[j]>s[j+1]) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } } } for(i=5;i>=0;i--){ //从高到低输出平均分 printf("average score:%fn",s[i]); } return 0; }



