#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void assign(int a[],int i,int j,int e){
if(i>=j)
a[i*(i-1)/2+j-1]=e;
else
a[j*(j-1)/2+i-1]=e;
}
int value(int a[],int i,int j){
if(i>=j)
return i*(i-1)/2+j-1;
else
return j*(j-1)/2+i-1;
}
int main(){
int *array=0,i,j;
int N,s,n,k;
printf("请输入对称矩阵阶数:\n");
scanf("%d",&N);
array=(int*)malloc(sizeof(int)*(N*(N+1)/2));
printf("请输入对称矩阵下三角部分(%d个数):\n",N*(N+1)/2);
for(i=1;i<=N;i++)
for(j=1;j<=i;j++)
{
scanf("%d",&n);
assign(array,i,j,n);
}
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
k=value(array,i,j);
printf("%3d ",array[k]);
}
printf("\n");
}
free(array);
system("pause");
return 0;
}
二维对称矩阵的C语言实现
最新推荐文章于 2023-11-23 21:39:41 发布
本文介绍了一种对称矩阵的压缩存储方法,并通过C语言实现了一个程序,该程序可以输入对称矩阵的阶数和下三角部分的元素,然后以压缩形式存储并还原整个矩阵。
6964

被折叠的 条评论
为什么被折叠?



