题目来源:大工慕课 链接
作者:Caleb Sung
题目要求
利用指针编写程序,定义一个3行3列的二维数组,并在程序中对其进行赋值,数组元素的类型不限,输出该二维数组以及各行的均值,各行的均值可直接输出,也可存储于维数组中再输出
a.输出二维数组时要求使用指向数组的指针变量
b.计算各行的均值时要求使用指针数组
注意: 数组指针和指针数组的区别
这部分请参考我的文章《C语言:数组指针和指针数组的区别》:
https://blog.csdn.net/qq_41933331/article/details/80233856
弄明白了两者的区别,我们可以来做题了:
参考解答
#include<stdio.h>
void main(){
int array[3][3], (*pArr)[3], *p[3], i, j, sum;
srand(time(NULL));
for(i=0; i<3; i++)
for(j=0; j<3; j++)
array[i][j] = rand()%100+0;
pArr = array;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++){
printf("%d\t", pArr[i][j]);
if(j == 2){
printf("\n");
}
}
for(i=0; i<3; i++)
p[i] = array[i];
for(i=0; i<3; i++){
sum = 0;
for(j=0; j<3; j++){
sum += p[i][j];
}
printf("第%d行的和是%d\n", i+1, sum);
}
}
运行效果
76 30 44
44 97 74
65 93 45
第1行的和是150
第2行的和是215
第3行的和是203