编写C语言程序,将一个n阶下三角矩阵压缩存储到一个一维数组中,并分别显示压缩存储前后矩阵和数组中的元素。
时间: 2024-04-04 20:30:26 浏览: 70
好的,下面是 C 语言程序的实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main()
{
int n, i, j, count = 0;
int matrix[MAX_SIZE][MAX_SIZE];
int array[MAX_SIZE * (MAX_SIZE + 1) / 2];
// 读入矩阵大小
printf("请输入矩阵的阶数:");
scanf("%d", &n);
// 读入矩阵元素
printf("请输入矩阵的元素:\n");
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &matrix[i][j]);
// 将下三角矩阵压缩成一维数组
for (i = 0; i < n; i++)
for (j = 0; j <= i; j++)
array[count++] = matrix[i][j];
// 显示原始矩阵
printf("\n原始矩阵:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%d ", matrix[i][j]);
printf("\n");
}
// 显示压缩存储后的数组
printf("\n压缩存储后的数组:\n");
for (i = 0; i < count; i++)
printf("%d ", array[i]);
printf("\n");
// 显示解压缩后的矩阵
printf("\n解压缩后的矩阵:\n");
count = 0;
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++)
printf("%d ", array[count++]);
for (j = i + 1; j < n; j++)
printf("0 ");
printf("\n");
}
return 0;
}
```
程序的思路是先读入一个 n 阶下三角矩阵,然后将其压缩成一个一维数组,再将压缩后的数组解压缩成原始矩阵。在程序中,我们使用了 `count` 变量来记录当前压缩后的数组下标,以及解压缩时应该读取的数组下标。在压缩时,我们使用了两个循环来遍历下三角矩阵,然后将元素存储到数组中。在解压缩时,我们同样使用了两个循环来遍历下三角矩阵,然后从数组中读取元素值,将其放在矩阵中相应的位置上。
希望这个程序能够帮助你解决问题。
阅读全文