📄 reversematrix.txt
字号:
#include<stdio.h>//实现矩阵的转置
#define maxsize 10000
typedef int datatype;
typedef struct
{
int i,j;
datatype v;
}trituplenode;
typedef struct
{
trituplenode data[maxsize];
int m,n,t;
}tritupletable;
void input(tritupletable *a)
{
int i,j,k=0;
datatype x;
printf("please input the weishu of the matrix:\n");
scanf("%d%d",&a->m,&a->n);
printf("\nenter %d*%d numbers:\n",a->m,a->n);
for(i=0;i<a->m;i++)
for(j=0;j<a->n;j++)
{
scanf("%d",&x);
if(x)
{
a->data[k].i=i;
a->data[k].j=j;
a->data[k].v=x;
k++;
}
}
a->t=k;
}
void output(tritupletable *a)
{
int i,j,k;
for(i=0;i<a->m;i++)
{
for(j=0;j<a->n;j++)
{
for(k=0;k<a->t;k++)
if(a->data[k].i==i&&a->data[k].j==j)
break;
if(k==a->t)
printf("%5d",0);
else
printf("%5d",a->data[k].v);
}
printf("\n");
}
}
void transmartix(tritupletable *a,tritupletable *b)
{
int p,q,col;
b->m=a->n;
b->n=a->m;
b->t=a->t;
if(b->t==0)//该处应该是恒等于,而非等于
printf("A=0\n");
q=0;
for(col=0;col<a->n;col++)
for(p=0;p<a->t;p++)
{
if(a->data[p].j==col)
{
b->data[q].i=a->data[p].j;
b->data[q].j=a->data[p].i;//该处有一个错误
b->data[q].v=a->data[p].v;
q++;
}
}
}
void main()
{
tritupletable A,B;
input(&A);
printf("output matrix A:\n");
output(&A);
transmartix(&A,&B);
printf("the result of the zhuanzhi of matrix A:\n");
output(&B);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -