📄 shuzu.cpp
字号:
# include<stdio.h>
# define MAXN 100
int i,j,k,q,P;
void mat_transpose(int a[MAXN][3],int c,int i,int j)
{
int m,n,t,p,q,col;
int b[MAXN][3];
int e[MAXN][MAXN];
m=a[0][0];
n=a[0][1];
t=a[0][2];
b[0][0]=n;
b[0][1]=m;
b[0][2]=t;
if(t>0)
{
q=1;
for(col=0;col<n;col++)
for(p=1;p<=t;p++)
if(a[p][1]==col)
{
b[q][0]=a[p][1];
b[q][1]=a[p][0];
b[q][2]=a[p][2];
q++;
}
}
printf("转置后的b数组为:\n");
for(q=0;q<c;q++)
{
for(p=0;p<3;p++)
printf(" %d",b[q][p]);
printf("\n");
}
printf("还原为转置数组\n");
for(p=0;p<j;p++){
for(q=0;q<i;q++)
e[p][q]=0;
}
for(p=1;p<c;p++)
e[b[p][0]][b[p][1]]=b[p][2];
for(p=0;p<j;p++){
for(q=0;q<i;q++)
printf("%3d",e[p][q]);
printf("\n");
}
}
void change(int t[MAXN][MAXN],int i,int j){
int p,c=1;
int a[MAXN][3];
for(p=0;p<i;p++)
{
for(q=0;q<j;q++)
if(t[p][q]!=0){
a[c][0]=p;
a[c][1]=q;
a[c][2]=t[p][q];
c++;
}
else ;
}
a[0][0]=i;
a[0][1]=j;
a[0][2]=c;
printf("a三元数组为:\n");
for(q=0;q<c;q++)
{
for(p=0;p<3;p++)
printf(" %d",a[q][p]);
printf("\n");
}
mat_transpose(a,c,i,j);
}
void main()
{
int i,j,q,p;
printf("请按顺序输入稀疏矩阵行数i,列数j\n");
scanf("%d,%d",&i,&j);
int t[MAXN][MAXN];
for(p=0;p<i;p++)
for(q=0;q<j;q++){
printf("请输入t[%d][%d]\n",p,q);
scanf("%d",&t[p][q]);
}
printf("t矩阵为:\n");
for(q=0;q<i;q++)
{
for(p=0;p<j;p++)
printf("%3d",t[q][p]);
printf("\n");
}
change(t,i,j);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -