輸入m個學生,每個學生有4門課,在主調函式中輸入學生的相關資訊,編寫三個函式:

(1)求第一門課的平均分;

(2)找出有兩門課以上不及格的學生,並輸出他們的學號和全部成績,要求用指標函式實現:float*Search(float(*p)[4],int n);

(3)找出全部成績在85分以上的學生。

#include<stdio.h>

#define N 40

float average(float (*p)[4],int n)

{

int i;

float ave=0;

for(i=0;i<n;i++)

ave=ave+**(p+i);

ave=ave/n;

return ave;

}

float *Search(float (*p)[4],int n){

//找兩門不及格的同學 

int j,count=0;

for (j=0;j<4;j++){

if(*(*(p+n)+j)<60)

count++;

}

if(count>2)

return *(p+n);

else

   return NULL; 

}

void Good(int a[],float (*p)[4],int n){

//兩門成績85以上 

int i,j,flag;

for (i=0;i<n;i++){

flag=1;

for (j=0;j<4&&flag;j++){

if (*(*(p+i)+j)<85)

      flag=0;

}

if (flag){

printf("%6d",a[i]);

for (j=0;j<4;j++)

  printf("%6.1f",*(*(p+i)+j));

 printf("\n");

  }

}

}

int main()

{

float score[N][4],ave,*s;

int n,i,j,a[N];

printf("輸入學生個數:\n");

scanf("%d",&n);

printf("輸入%d個學生的學號與成績:\n",n);

for(i=0;i<n;i++){

scanf("%d",&a[i]);

for(j=0;j<4;j++)

scanf("%f",&score[i][j]);

}

ave=average(score,n);

printf("第一門課的平均成績為:%.2f\n",ave);   

printf("兩門課以上不及格的同學的學號和成績為:\n");

 for (i=0;i<n;i++){

s=Search(score,i);

if (s){

printf("%6d",a[i]);

for (j=0;j<4;j++)

    printf("%6.1f",score[i][j]);

    printf("\n");

}

}

printf("全部成績在85分以上的學生的學號和成績:\n");

Good(a,score,n);

return 0;

}

.