当前位置:首页 » 编程语言 » c语言输出转置矩阵

c语言输出转置矩阵

发布时间: 2023-04-05 10:02:53

c语言三元组输入输出的转置矩阵

分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:

用三元组存储的稀疏矩阵的转置运算

三元组采用行优先表示法,转置后的矩阵的三元组同样要采用行优先表示法

0 1 12

0 2 9

2 0 -3

3 5 14

3 2 24

4 1 18

5 0 15

5 3 -7

struct node

{

int i,j; 定义三元组的行、列号

int v; 三元组的值

};

struct sparmatrix

{

int rows,cols; 稀疏矩阵的行纯指裂、列数

int terms; 稀疏矩阵的非零元个数

struct node data[maxsize]; 存放稀疏矩阵的三元组表

};

(1)按照A的列序进行转置

由于A的列即为B的行,在a.data(原表)中,按列扫描,则得到的b.data(转置表)必按行优先存放。

但为了找到A的每一列中所有的非零的元素,每次都必须从头到尾扫描A的三元组表(有多少列,则扫描多少遍)

void transpose(struct sparmatrix a)

{

struct sparmatrix b; /*b为a的转置*/

int ano,bno=0,col,i;

b.rows=a.cols; b.cols=a.rows;

b.terms=a.terms;

if (b.terms>0)

{

for ( col=0; col<a.cols; col++) /*按列号扫描*/

for( ano=0;ano<a.terms;ano++) /*对三元组扫描*/

if (a.data[ano].j==col) /*进行转置*/

{ b.data[bno].j=a.data[ano].i;

b.data[bno].i=a.data[ano].j;

b.data[bno].v=a.data[ano].v;

bno++;

}

}

…………….

(2)按照A的行序进行转置

即按a.data中三元组的次序进行转置,并将转置后的三元组放入b中恰当的位置。

若能在转置前求出矩阵A的每一列col(即B中每一行)的第一个非零元转置后在b.data中的正确位置pot[col](0≤col<a.cols),那么在对a.data的三元组依次作转置时,只要将三元组按列号col放置到b.data[pot[col]]中,之后将pot[col]内容加1,以指示第逗铅col列的下一个非零做闭元的正确位置。

void fastrans(struct sparmatrix a)

{

struct sparmatrix b;

int pot[maxsize],col,ano,bno,t,i;

b.rows=a.cols; b.cols=a.rows;

b.terms=a.terms;

if(b.terms>0)

{

for(col=0;col<=a.cols;col++)

pot[col]=0;

for( t=0;t<a.terms;t++) /*求出每一列的非零元个数*/

{

col=a.data[t].j;

pot[col+1]=pot[col+1]+1;

}

pot[0]=0;

for(col=1;col<a.cols;col++) /*求出每一列的第一个非零元在转置后的位置*/

pot[col]=pot[col-1]+pot[col];

for( ano=0;ano<a.terms;ano++) /*转置*/

{ col=a.data[ano].j;

bno=pot[col];

b.data[bno].j=a.data[ano].i;

b.data[bno].i=a.data[ano].j;

b.data[bno].v=a.data[ano].v;

pot[col]=pot[col]+1;

}

}

❷ C语言编程:输入一个2x3的矩阵,输出它的转置矩阵。

#include<stdio.h>拍判雀

int main()

{int a[2][3],b[3][2],i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{scanf("%d",&a[i][j]);

冲哗b[j][i]=a[i][j];

}

printf("========== ");

for(i=0;i<3;i++)

{for(j=0;j<2;j++)

printf("袭早%4d",b[i][j]);

printf(" ");

}

return 0;

}

❸ c语言~使用函数 完成3×3矩阵转置,输入一矩阵,输出其转置矩阵。

#include<stdio.h>
#defineN3
intarray[N][N];
voidtransition(intarray[][3])
{
inti,j,temp;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
intmain(void)
{
voidtransition(intarray[][3]);
inti,j;
printf("请输入数据 ");
高禅灶for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&array[i][j]);
printf(" ");
transition(array);
printf("调换数据如下 ");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%5d",array[i][j]);
printf(" ");
}
return0;
}
~~~~~~
我写的代码,你自袭厅己戚扮参考吧,很简单的

❹ C语言编程实现2*3的矩阵转置

#include<iostream>

usingnamespacestd;

voidzhuang(inta[3][3])

{intm,n,i;

for(m=0;m<2;m++)

for(i=0;i<3;i++)

{if(m!=1||i!=0)

{n=a[i][m];

a[i][m]=a[m][i];

a[m][i]=n;

intmain()

inta[3][3];

inti,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cin>>a[i][j];

zhuang(a)做汪伏;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cout<<a[i][j]<<"";

cout<<endl;

return0;

cout&lt;&lt;"处理后的矩阵:"&lt;&lt;endl;

for(i=0;i&lt;3;i++)//输出处理后的矩阵

for(j=0;j&lt;3;j++)

cout&lt;&lt;setw(5)&lt;&lt;a&lt;i&gt;[j];

cout&lt;&lt;endl;

return0;

//交换函数

voidmove(int*pointer)

inti,j,t;

for(i=0;i&lt;3;i++)

for(j=i;j&lt;3;j++)

t=*(pointer+3*i+j);//这是关键将矩阵转置的条件

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

运行效果:

(4)c语言输出转置矩阵扩展阅读:

在C语言或C++中,会把用来#include的文件的扩展名叫.h,称其为头文件。

#include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。在现行的c++版本中,应用这个头文件应是#include<stdio.h>

stdio 就是指 “standard input & output"(标准输入输出)所以,源代码中如用到标准输纯携入输出函数时,就要包含这个头文件!

例如c语言中的 printf("%d"陵旅,i); scanf("%d",&i);等函数。

❺ C语言编译,目的是输入一个四行四列的矩阵,找出最小值并输出转置矩阵

#include<stdio.h>
intmain()
{
inta[4][4];
intb[4][4];//
inti,j,min;
introw,colum;//
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
min=a[0][0];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(a[i][j]<min)
{
min=a[i][j];
row=i;//
colum=j;//
}
}
printf("min=%d row=%d colum=%d ",min,row,colum);//
printf(" ");
printf(" ");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
b[j][i]=a[i][j];
}
}
printf("b: ");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",b[i][j]);
}
printf(" ");
}
return0;
}

❻ c语言如何通过定义函数来转置矩阵

#include <stdio.h>

int main()

{ struct aaa

{ int x;

int y;

};

struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

int i,j;

for(i=0; i<3; i++)

{ for(j=0; j<3; j++)

printf("[%d,%d] ",a[i][j].x,a[i][j].y);

printf(" ");

}

printf("after: ");

for(i=0; i<3; i++)

for(j=0; j<i; j++)

{ t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

for(i=0; i<3; i++)

{ for(j=0; j<3; j++)

printf("[%d,%d] ",a[i][j].x,a[i][j].y);

printf(" ");

}

return 0;

}

或:

#include <stdio.h>

struct aaa

{ int x;

int y;

};

void zhuan(struct aaa a[][3])

{ struct aaa t;

int i,j;

for(i=0; i<3; i++)

for(j=0; j<i; j++)

{ t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

void prt(struct aaa a[][3])

{ int i,j;

for(i=0; i<3; i++)

{ for(j=0; j<3; j++)

printf("[%d,%d] ",a[i][j].x,a[i][j].y);

printf(" ");

}


}

int main()

{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

prt(a);

zhuan(a);

printf("after: ");

prt(a);

return 0;

}

❼ C语言矩阵转置

//经握销过vc6调试成功段毕游
void transferMat(int a[] , int b[], int n) //a表示待转置的矩阵,b表示输出矩阵,n表数拍示元素个数
{
int i,j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
b[j,i]=a[i,j];
}
}

热点内容
android让状态栏透明 发布:2024-11-02 12:20:09 浏览:180
java反射使用 发布:2024-11-02 12:09:03 浏览:920
赚钱游戏挂机脚本链接 发布:2024-11-02 12:08:22 浏览:810
windowsxp用户名和密码是什么啊 发布:2024-11-02 12:03:13 浏览:950
工行解压码 发布:2024-11-02 12:03:07 浏览:118
本田冠道出厂配置什么牌子轮胎 发布:2024-11-02 12:03:07 浏览:470
怎么打开被gcc编译过的软件 发布:2024-11-02 12:00:52 浏览:435
新时达as380原始密码是多少 发布:2024-11-02 11:51:27 浏览:810
导航网站源码下载 发布:2024-11-02 11:49:55 浏览:976
饥荒搭建的服务器如何换新档 发布:2024-11-02 11:48:11 浏览:958