如何使用C语言创建一个特定的二维数组(a)来表示给出的矩阵?具体来说,数组应该如下所示:第一行是1, 2, 3, 4;第二行是5, 1, 2, 3;第三行是5, 5, 1, 2;第四行是5, 5, 5, 1。请提供生成和存储这个矩阵的C代码实现。
时间: 2024-11-30 20:22:37 浏览: 15
在C语言中,你可以通过动态内存分配和初始化的方式来创建一个二维数组来表示给定的矩阵。下面是一个简单的示例,展示了如何创建并初始化这样的数组:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROWS 4
#define COLS 4
int main() {
int** a; // 定义指向二维数组的指针
int i, j;
// 动态分配内存
a = (int **)malloc(ROWS * sizeof(int *));
if (a == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
// 分配每一行的内存
for (i = 0; i < ROWS; i++) {
a[i] = (int *)malloc(COLS * sizeof(int));
if (a[i] == NULL) {
printf("Memory allocation for row %d failed.\n", i + 1);
free(a); // 如果前面的分配失败,释放已分配的部分
return 1;
}
}
// 初始化矩阵
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
a[i][j] = i * COLS + j + 1; // 矩阵的第一行从1开始
}
}
// 打印矩阵
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 释放内存
for (i = 0; i < ROWS; i++) {
free(a[i]);
}
free(a);
return 0;
}
```
阅读全文