#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("= ",array[k]);
}
printf("\n");
}
free(array);
system("pause");
return 0;
}