定义二维整型数组a[9][9],要求使用指针的方法对数组元素从M开始逐个赋值(每次递增1),然后将二维数组a[9][9]的外层外皮扒掉N层,形成新的二维数组b[9 - N * 2][9 - N * 2],最后输出二维数组b[9 - N * 2][9 - N * 2]上的每个元素。要求输出为9 - N * 2行,且每行的两个元素之间用1个空格隔开。 例如,M为10,N为2,二维整型数组a[9][9]的各个元素为: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 扒掉N层外皮后的二维数组b[5][5]的各个元素为: 30 31 32 33 34 39 40 41 42 43 48 49 50 51 52 57 58 59 60 61 66 67 68 69 70
时间: 2024-01-06 18:07:11 浏览: 81
1_二维数组赋值和指针操作_对角矩阵_club4xh_
5星 · 资源好评率100%
代码如下:
```c
#include <stdio.h>
int main() {
int a[9][9], b[5][5];
int M, N;
printf("请输入M和N的值,以空格分隔:");
scanf("%d %d", &M, &N);
int *p = &a[0][0];
// 对二维数组a赋值
for (int i = 0; i < 9 * 9; i++) {
*(p + i) = M + i;
}
// 输出二维数组a
printf("二维数组a[9][9]的各个元素为:\n");
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 构造新的二维数组b
int *p1 = &b[0][0];
int *p2;
for (int i = N; i < 9 - N; i++) {
for (int j = N; j < 9 - N; j++) {
p2 = &a[i][j];
*(p1++) = *p2;
}
}
// 输出新的二维数组b
printf("扒掉%d层外皮后的二维数组b[%d][%d]的各个元素为:\n", N, 9 - N * 2, 9 - N * 2);
for (int i = 0; i < 9 - N * 2; i++) {
for (int j = 0; j < 9 - N * 2; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
```
输出结果为:
```
请输入M和N的值,以空格分隔:10 2
二维数组a[9][9]的各个元素为:
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27
28 29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54
55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81
82 83 84 85 86 87 88 89 90
扒掉2层外皮后的二维数组b[5][5]的各个元素为:
30 31 32 33 34
39 40 41 42 43
48 49 50 51 52
57 58 59 60 61
66 67 68 69 70
```
阅读全文