定义一个3×4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值,并计算出二维数组中各元素的平均值。
时间: 2023-06-05 12:04:55 浏览: 189
可以这样定义一个3x4的二维数组并且输出元素的值:
```c
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 定义一个3x4的二维数组
int i, j, *p;
int sum = 0, avg = 0;
p = &arr[0][0]; // 将p指向二维数组的首元素
// 用指向元素的指针变量输出二维数组各元素的值
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", *(p + i * 4 + j));
sum += *(p + i * 4 + j); // 计算数组中所有元素的和
}
printf("\n");
}
avg = sum / 12; // 计算二维数组中所有元素的平均值
printf("二维数组中所有元素的平均值为:%d\n", avg);
```
运行结果如下:
```
1 2 3 4
5 6 7 8
9 10 11 12
二维数组中所有元素的平均值为:6
```
相关问题
利用二维数组的指针变量实现二维数组的任意元素输出
利用二维数组的指针变量可以实现二维数组的任意元素输出。下面是一个示例代码:
```c
#include <stdio.h>
int main() {
int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };
int *p;
p = &a[0][0]; // 将指针p指向二维数组的第一个元素
// 输出二维数组的任意元素
printf("a[1][2] = %d\n", *(p + 1 * 4 + 2)); // 输出:6
printf("a[2][3] = %d\n", *(p + 2 * 4 + 3)); // 输出:11
return 0;
}
```
在上面的代码中,我们首先定义了一个二维数组a,并将指针p指向二维数组的第一个元素。然后,通过指针p加上相应的偏移量来访问二维数组的任意元素。例如,`*(p + 1 * 4 + 2)`表示访问二维数组a的第2行第3列的元素,即6。
从键盘为数组a[4][4]输入数据,分别用指向数组元素的指针变量和指向一维数组的指针变量输入输出数组元素,求该数组每一行的最大值,将这些值保存在一维数组b[4]中
首先,我们可以使用双重循环从键盘输入二维数组a[4][4]的数据:
```
for(int i=; i<4; i++){
for(int j=; j<4; j++){
cin >> a[i][j];
}
}
```
接着,我们可以定义一个指向数组元素的指针变量p,通过指针变量p遍历数组a[4][4]的每一个元素,并将其输出:
```
int *p;
for(int i=; i<4; i++){
for(int j=; j<4; j++){
p = &a[i][j];
cout << *p << " ";
}
cout << endl;
}
```
同样地,我们也可以定义一个指向一维数组的指针变量q,通过指针变量q遍历数组b[4]的每一个元素,并将其赋值为每一行的最大值:
```
int *q;
for(int i=; i<4; i++){
int max = a[i][];
for(int j=1; j<4; j++){
if(a[i][j] > max){
max = a[i][j];
}
}
q = &b[i];
*q = max;
}
```
最终,我们可以输出一维数组b[4]的每一个元素,即每一行的最大值:
```
for(int i=; i<4; i++){
cout << b[i] << " ";
}
```
阅读全文