1. 程式人生 > >例8.25有a個學生,每個學生有b門課程的成績。要求在使用者輸入學生序號以後,能輸出該學生的全部成績。用指標函式實現。

例8.25有a個學生,每個學生有b門課程的成績。要求在使用者輸入學生序號以後,能輸出該學生的全部成績。用指標函式實現。

#include <stdio.h>
int main()
 {float score[ ][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};   //定義陣列,存放成績
  float  *search(float (*pointer)[4]);                      // 函式宣告
  float  *p;
  int i,j;
  for(i=0;i<3;i++)
     {p=search(score+i);                                    //呼叫search函式,如有不及格返回score[i][0]的地址,否則返回NULL,
      if(p==*(score+i))                                     //如果返回的是score[i][0]的地址
        {printf("No.%d score:",i);
		 for(j=0;j<4;j++)
            printf("%5.2f  ",*(p+j));                       // 輸出score[i][0]到score[i][3]的值
         printf("\n");
        } 
     }
  return 0;
}

float *search(float (*pointer)[4])                            // 定義函式,形參pointer是指向一維陣列的指標變數
  {int i=0;
   float *pt;
   pt=NULL;                                                   // 先使pt的值為NULL
   for(;i<4;i++)
     if(*(*pointer+i)<60) pt=*pointer;                        // 如果有不及格課程,使pt指向score[i][0] 
   return(pt);
}