C程式 成績排序 題目內容:從鍵盤輸入3個同學4門課的成績,將其按平均分從高到低排序輸出。

2020-08-14 21:08:16
#include <stdio.h> 
#define N 3 
#define M 4
float average_1(float *p);//求平均值 
int floatcmp(float a,float b);//比較 
int main()
{
	int i,j,flag;
	float scores[N][M],*p1=scores;//p1=scores[0],p1指向首地址 
	for(i=0;i<N*M;i++)
		scanf("%f",p1+i);//&(*(p1+i)) 
	float *p[N]={scores[0],scores[1],scores[2]};
	for(i=0;i<N;i++)//排序 
	{	int *temp;
		flag=1;
		for(j=0;j<N-i-1;j++)
		{
			if(floatcmp(average_1(p[j]),average_1(p[j+1]))<0)
			{
				flag=0;
				temp=p[j];
				p[j]=p[j+1];
				p[j+1]=temp;
			}
		}
		if(flag)
			break;
	}	
	for(i=0;i<N;i++)//輸出 
	{
		for(j=0;j<M;j++)
			printf("%7.2f",*(p[i]+j));
		printf("\n");
	}	
	return 0; 
}
int floatcmp(float a,float b)
{
	if(a>b)
		return 1;
	else if(a<b)
		return -1;
		else
			return 0;
}
float average_1(float *p)
{
	float s=0;//累加求和 
	int i=0;
	for(i=0;i<M;i++)
		s+=*(p+i);
	return s/M;
}

輸出結果:
在这里插入图片描述