思路:
1:用int *p指向a[0][0]的地址,因为二维数组是顺序存放元素的,所以p++就
代表下一个元素的地址,用它来求和即可
2:因为要求某个学生的成绩,这里用p指向具有4个元素的一维数组的指针比
较好理解,输出某个学生的全部成绩,
3:扩展一下,如果让输出某一个课程所有学生的全部成绩,就可以用for循环改变指向行的元素即可,比如(*(p+n)+i) 这时候改变n的值,i的值不变就可
以了。
//二维数组的元素的顺序存放的
#include <stdio.h>int main(void)
{void average(float *p,int n);void search(float (*p)[4],int n);//用来输出某一行或者某一行某一列的元素 float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};average(*score,12);//a[0][0]的地址做实参,顺序存放search(score,2);//score[0]做实参,指向每一行,return 0;}
void average(float *p,int n){float sum=0,aver;p_end=p+n-1;//代表最后一个元素 p+n代表第12个元素 for(;p<=p+n-1;p++){sum=sum+(*p); } aver=sum/n;printf("average=%5.2fn",aver);}void search(float (*p)[4],int n){int i;printf("第%d个学生的成绩是:n",n);for(i=0;i<4;i++){printf("%ft",(*(p+n)+i));} printf("n");}
本文发布于:2024-01-29 18:12:01,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652312417331.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |