排名次。用二维数组输入全班20个学生5门功课的成绩,求出各门功课的平均分,统计每个人的总分,并按降序排列并输出。
#include<stdio.h>
void sort(double a[],int n) {
double t;
int i,j;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main() {
double a[20][5] = {0}, ave[5] = {0}, total[20] = {0};
int i, j;
for(i = 0; i < 20; i++) {
for(j = 0; j < 5; j++) {
scanf("%lf", &a[i][j]);
total[i] += a[i][j];
}
}
printf("5门课程平均分:\n");
for(j = 0; j < 5; j++) {
for(i = 0; i < 20; i++) {
ave[j] += a[i][j];
}
ave[j] /= 5;
printf("%.2f ", ave[j]);
}
printf("\n总分按降序排序:\n");
sort(total, 20);
for(i = 0; i < 20; i++) {
printf("%.2f ", total[i]);
}
return 0;
}
#include<stdio.h>
#include<string.h>
typedef unsigned char u8;
int table[20][5]=
{
{70,61,62,63,64},//11
{71,61,62,63,64},//12
{72,61,62,63,64},//13
{73,61,62,63,64},//14
{74,61,62,63,64},//15
{75,61,62,63,64},//16
{76,61,62,63,64},//17
{77,61,62,63,64},//18
{78,61,62,63,64},//19
{79,61,62,63,64},//20
{60,61,62,63,64},//01
{61,61,62,63,64},//02
{62,61,62,63,64},//03
{63,61,62,63,64},//04
{64,61,62,63,64},//05
{65,61,62,63,64},//06
{66,61,62,63,64},//07
{67,61,62,63,64},//08
{68,61,62,63,64},//09
{69,61,62,63,64},//10
};
int main()
{
u8 i=0,j=0,k=0,h =0,m=0;
int temp =0;
int num[20] = {0} ;//每个同学排名
int sum[20] = {0} ;//每个同学总分
double Value[20]= {0};//各科平均分
//每个同学总分,各科平均分
for(i=0;i<20;i++)
{
for(j=0;j<5;j++)
{
sum[i] = sum[i] + table[i][j]; //每个同学总分
Value[i] = (sum[i])/5; //各科平均分
}
}
//排名
for(k=0;k<20;k++)
{
for(h=0;h<20;h++)
{
if(sum[k]<=sum[h])
{
num[k] =num[k]+1;
}
}
}
for(m=0;m<20;m++)
{
printf("总分sum[%d",m);
printf("]=%d",sum[m]);
printf(" 平均分Value[%d",m);
printf("]=%lf",Value[m]);
printf(" 排名=%d\r\n",num[m]);
}
}