1. 程式人生 > 實用技巧 >C語言 | 計算總平均分及第n個人的成績

C語言 | 計算總平均分及第n個人的成績

例32:有一個班,3個學生,各學習4門課,C語言程式設計實現計算總平均分數以及第n個學生的成績,要求使用指標。


解題思路:今天這道例題分為3部分,下述求的是第3個學生,讀者請思考怎麼改為求第n個學生。
第一步:求平均分函式:

void average(float *p,int n)//自定義求平均成績函式
{
  float *p_end;//定義浮點型別指標變數
  float sum=0,aver;//定義浮點型變數
  p_end=p+n-1;//把地址賦給指標變數
  for(;p<=p_end;p++)//for迴圈,注意第一處分號
  {
    sum=sum+(*p);//總和
  }
  aver
=sum/n;//平均分 printf("平均數是:%f",aver);//輸出平均分 printf("\n");//換行 }

第二步:求第n個學生成績函式

void search_Grade(float (*p)[4],int n)//自定義求第n個學生成績函式
{
  int i;//定義變數
  printf("第%d個學生的成績是:",n+1);//輸出,注意此處我寫的是n+1,陣列下標是從0開始的
  for(i=0;i<4;i++)//for迴圈
  {
    printf("%5.2f ",*(*(p+n)+i));
  }
}

原始碼演示:

#include<stdio.h>//
標頭檔案 int main()//主函式 { void average(float *p,int n);//函式宣告 void search_Grade(float (*p)[4],int n);//函式宣告 float score[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};//定義浮點型陣列 average(*score,12);//平均成績 search_Grade(score,2);//第3個學生的成績,這裡寫2是因為按照陣列從0開始 return 0;//主函式返回值為0 } void average(float *p,int n)//自定義求平均成績函式 {
float *p_end;//定義浮點型別指標變數 float sum=0,aver;//定義浮點型變數 p_end=p+n-1;//把地址賦給指標變數 for(;p<=p_end;p++)//for迴圈,注意第一處分號 { sum=sum+(*p);//總和 } aver=sum/n;//平均分 printf("平均數是:%f",aver);//輸出平均分 printf("\n");//換行 } void search_Grade(float (*p)[4],int n)//自定義求第n個學生成績函式 { int i;//定義變數 printf("第%d個學生的成績是:",n+1);//輸出,注意此處我寫的是n+1,陣列下標是從0開始的 for(i=0;i<4;i++)//for迴圈 { printf("%5.2f ",*(*(p+n)+i)); } }

編譯執行結果如下:

平均數是:6.500000
第3個學生的成績是: 9.00 10.00 11.00 12.00
--------------------------------
Process exited after 0.07228 seconds with return value 0
請按任意鍵繼續. . .

C語言學習路線

C語言開發工具

C語言|計算總平均分及第n個人的成績