数据结构(使用C语言)关于矩阵
为节省内存,N阶对称矩阵采用压缩存储,要求:(1)编写实现C=A+B操作的函数。设矩阵A,矩阵B和矩阵C均采用压缩存储方式存储,矩阵元素均为整数类型;(2)编写一个采用压...
为节省内存,N阶对称矩阵采用压缩存储,要求:
(1)编写实现C=A+B操作的函数。设矩阵A,矩阵B和矩阵C 均采用压缩存储方式存储,矩阵元素均为整数类型;
(2)编写一个采用压缩存储的N阶对称矩阵的输出函数,要求输出显示成矩阵形式,设矩阵元素均为整数类型;
(3)设矩阵A和矩阵B为如下所示的矩阵,编写一个用矩阵A和矩阵B作为测试例子的测试上述函数的主程序。
1 2 3 10 20 30
A= 2 4 5 B= 20 40 50
3 5 6 30 50 60 展开
(1)编写实现C=A+B操作的函数。设矩阵A,矩阵B和矩阵C 均采用压缩存储方式存储,矩阵元素均为整数类型;
(2)编写一个采用压缩存储的N阶对称矩阵的输出函数,要求输出显示成矩阵形式,设矩阵元素均为整数类型;
(3)设矩阵A和矩阵B为如下所示的矩阵,编写一个用矩阵A和矩阵B作为测试例子的测试上述函数的主程序。
1 2 3 10 20 30
A= 2 4 5 B= 20 40 50
3 5 6 30 50 60 展开
2个回答
展开全部
你的测试数据不符合条件,不是对称矩阵。但函数调试已调试好了,无误。
#include <stdio.h>
#define N 3
#define M (N*N+N)/2
void add(int C[],int A[],int B[])
{
for(int i=0;i<M;i++)
C[i]=A[i]+B[i];
}
void print(int C[])
{
int i,j,t;
for(i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
if(i>=j) t=(i+1)*i/2+j;
else t=(j+1)*j/2+i; //下三角存储
printf("%d ",C[t]);
}
printf("\n");
}
}
int main(void)
{
int a[N][N]={{1,2,3},{10,20,30},{2,4,5}};
int b[N][N]={{20,40,50},{3,5,6},{30,50,60}};
int A[M],B[M],C[M];
int i,j,t=0,k=0;
for(i=0;i<=2;i++)
for(j=0;j<=i;j++)
{
A[t++]=a[i][j];
B[k++]=b[i][j];
}
add(C,A,B);
print(C);
return 0;
}
#include <stdio.h>
#define N 3
#define M (N*N+N)/2
void add(int C[],int A[],int B[])
{
for(int i=0;i<M;i++)
C[i]=A[i]+B[i];
}
void print(int C[])
{
int i,j,t;
for(i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
if(i>=j) t=(i+1)*i/2+j;
else t=(j+1)*j/2+i; //下三角存储
printf("%d ",C[t]);
}
printf("\n");
}
}
int main(void)
{
int a[N][N]={{1,2,3},{10,20,30},{2,4,5}};
int b[N][N]={{20,40,50},{3,5,6},{30,50,60}};
int A[M],B[M],C[M];
int i,j,t=0,k=0;
for(i=0;i<=2;i++)
for(j=0;j<=i;j++)
{
A[t++]=a[i][j];
B[k++]=b[i][j];
}
add(C,A,B);
print(C);
return 0;
}
迈杰
2024-11-30 广告
2024-11-30 广告
RNA-seq数据分析是转录组研究的核心,包括数据预处理、序列比对、定量分析、差异表达分析、功能注释和可视化等步骤。数据预处理主要是质量控制和去除低质量序列。序列比对使用HISAT2、STAR等工具将reads比对到参考基因组。定量分析评估...
点击进入详情页
本回答由迈杰提供
展开全部
你的测试数据不符合条件,不是对称矩阵。但函数调试已调试好了,无误。
#include
<stdio.h>
#define
N
3
#define
M
(N*N+N)/2
void
add(int
C[],int
A[],int
B[])
{
for(int
i=0;i<M;i++)
C[i]=A[i]+B[i];
}
void
print(int
C[])
{
int
i,j,t;
for(i=0;i<N;i++)
{
for(int
j=0;j<N;j++)
{
if(i>=j)
t=(i+1)*i/2+j;
else
t=(j+1)*j/2+i;
//下三角存储
printf("%d
",C[t]);
}
printf("\n");
}
}
int
main(void)
{
int
a[N][N]={{1,2,3},{10,20,30},{2,4,5}};
int
b[N][N]={{20,40,50},{3,5,6},{30,50,60}};
int
A[M],B[M],C[M];
int
i,j,t=0,k=0;
for(i=0;i<=2;i++)
for(j=0;j<=i;j++)
{
A[t++]=a[i][j];
B[k++]=b[i][j];
}
add(C,A,B);
print(C);
return
0;
}
#include
<stdio.h>
#define
N
3
#define
M
(N*N+N)/2
void
add(int
C[],int
A[],int
B[])
{
for(int
i=0;i<M;i++)
C[i]=A[i]+B[i];
}
void
print(int
C[])
{
int
i,j,t;
for(i=0;i<N;i++)
{
for(int
j=0;j<N;j++)
{
if(i>=j)
t=(i+1)*i/2+j;
else
t=(j+1)*j/2+i;
//下三角存储
printf("%d
",C[t]);
}
printf("\n");
}
}
int
main(void)
{
int
a[N][N]={{1,2,3},{10,20,30},{2,4,5}};
int
b[N][N]={{20,40,50},{3,5,6},{30,50,60}};
int
A[M],B[M],C[M];
int
i,j,t=0,k=0;
for(i=0;i<=2;i++)
for(j=0;j<=i;j++)
{
A[t++]=a[i][j];
B[k++]=b[i][j];
}
add(C,A,B);
print(C);
return
0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询