C语⾔⼆维数组动态分配内存(结合例题)exercise:
给出⼀个n*n(n<=10)的⼆维矩阵,计算其周围⼀圈元素之和。
(提⽰:可以⽤循环累加第⼀⾏最后⼀⾏第⼀列最后⼀列,再减去矩阵四个⾓的元素,注意数组下标从0开始)
输⼊数据只有⼀组,⾸先在第⼀⾏输⼊n,接下来有n⾏,每⾏输⼊n个整数。
输出该矩阵的周围⼀圈元素之和。
Code:
#include<stdio.h>
#include<malloc.h>
int main()
{
int n;
int i = 0, j = 0, sum = 0;
scanf("%d", &n);
//⼆维数组动态分配内存
//为分配n⾏内存
int **arr = (int **)malloc(sizeof(int)*n);
//为每⾏n列内存
for(i = 0; i < n; i++){
arr[i] = (int *)malloc(sizeof(int)*n);
}
//录⼊数据
for(i = 0; i < n; i++){
怎么定义二维数组c语言
for(j = 0; j < n; j++){
scanf("%d", &arr[i][j]);
}
}
//测试数据是否传⼊
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
/
/计算矩阵外围数据之和
for(int i = 0; i < n; i++){
sum+=arr[0][i];
sum+=arr[n-1][i];
sum+=arr[i][0];
sum+=arr[i][n-1];
}
sum = sum - arr[0][0] - arr[0][n-1] - arr[n-1][0] - arr[n-1][n-1];
printf("%d", sum);
return 0;
}
The n and the matrix
The result: 52
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论