“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”


——包租婆 这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢? 当然是每天都练习一道C语言题目!!

作者

闫小林

白天搬砖,晚上做梦。我有故事,你有酒么?


例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//头文件 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
请按任意键继续. . .