使用malloc函数创建一个指定行数和列数的二维数组,计算其二维数组对角线上元素的和
时间: 2023-08-11 16:03:40 浏览: 104
好的,下面是使用 `malloc` 函数创建指定行数和列数的二维数组,并计算其对角线上元素的和的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows, cols;
printf("Enter the number of rows: ");
scanf("%d", &rows);
printf("Enter the number of columns: ");
scanf("%d", &cols);
// Allocate memory for the 2D array
int **arr = (int **) malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
arr[i] = (int *) malloc(cols * sizeof(int));
}
// Initialize the 2D array with random values
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
arr[i][j] = rand() % 10; // Generate a random integer between 0 and 9
}
}
// Print the 2D array
printf("The 2D array is:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
// Calculate the diagonal sum of the 2D array
int sum = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (i == j) {
sum += arr[i][j];
}
}
}
// Print the diagonal sum of the 2D array
printf("The diagonal sum of the 2D array is: %d\n", sum);
// Free the memory allocated for the 2D array
for (int i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
在这段代码中,我们首先通过 `scanf` 函数从用户处获取行数和列数,并使用 `malloc` 函数分配内存空间来创建一个指定大小的二维数组。然后我们使用 `rand` 函数来为二维数组中的每个元素初始化一个随机值,并使用两个嵌套的循环来遍历和输出二维数组。
接下来,我们使用两个嵌套的循环来计算二维数组对角线上元素的和,并输出该值。
最后,我们使用 `free` 函数释放分配给二维数组的内存空间,确保程序不会出现内存泄漏问题。
阅读全文