C语言代码思路,题目如下创建如下二维数组4*5 Arr2D,以指针形式访问蓝色和红色子矩阵,并输出红色和蓝色区域各自的总和、均值。 矩阵为 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 红色矩阵就是原来矩阵第一行到第三行,第一列到第二列,蓝色矩阵就是第二行到第四行,第二列到第四列
时间: 2024-01-03 18:03:17 浏览: 73
C语言 指针与二维数组详解
题目与之前的题目类似,只是矩阵的行列数发生了变化。我们需要做出相应的修改。代码如下:
```
#include <stdio.h>
int main() {
int Arr2D[4][5] = {{1, 2, 3, 4, 5},
{2, 4, 6, 8, 10},
{3, 6, 9, 12, 15},
{4, 8, 12, 16, 20}};
int *Red = &Arr2D[0][0];
int *Blue = &Arr2D[1][1];
int RedSum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
RedSum += *(Red + i * 5 + j);
}
}
float RedAvg = (float)RedSum / 6.0;
int BlueSum = 0;
for (int i = 1; i < 4; i++) {
for (int j = 1; j < 4; j++) {
BlueSum += *(Blue + i * 5 + j);
}
}
float BlueAvg = (float)BlueSum / 9.0;
printf("Red matrix: sum = %d, avg = %.2f\n", RedSum, RedAvg);
printf("Blue matrix: sum = %d, avg = %.2f\n", BlueSum, BlueAvg);
return 0;
}
```
与之前的代码相比,只需要将二维数组的大小改为4行5列,指针访问元素时每行的元素个数也要相应改为5,其他的代码都可以不变。
阅读全文