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

c语言求转置矩阵

发布时间: 2025-05-01 14:13:39

‘壹’ C语言:初始化一个5*5的矩阵,输出然后求它的转置。

1.简单讲声明一个a[5][5]这样的数组
2.然后使用scanf("%d",&a[i][j]),这样的输入函数进行输入初始化
3.然后使用printf("%d",&a[i][j]),这样的函数进行打印到控制台
4.转置,就是a[i][j]的位置和a[j][i]的值互换,类似的如下写法
b=a[i][j];
a[i][j]=a[j][i];

a[j][i]=b;
5.打印输出。
将打印写成单独的函数,将转置写成宏或者函数。

‘贰’ !!!跪求C语言实现矩阵运算(加,减,乘、求逆、转置)

#include<stdio.h>
#include<math.h>

void jiafa()
{
int m,n;
float a[20][20],b[20][20],c[20][20];
int i,j;

printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);

printf("请输入第一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);

printf("请输入第二个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&b[i][j]);

printf("矩阵相加的结果为:");
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
{
c[i][j]=a[i][j]+b[i][j];
printf("%4f ",c[i][j]);
}
printf("\n");
}
}

void jianfa()
{
int m,n;
float a[20][20],b[20][20],c[20][20];
int i,j;

printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);

printf("请输入第一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);

printf("请输入第二个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&b[i][j]);

printf("矩阵相减的结果为:");
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
{
c[i][j]=a[i][j]-b[i][j];
printf("%4f ",c[i][j]);
}
printf("\n");
}
}

void chengfa()
{
int m,n;
float s;
float a[20][20],b[20][20],c[20][20];
int i,j,k;

printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);

printf("请输入第一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);

printf("请输入第二个矩阵:");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%4f",&b[i][j]);

for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
s=0;
for(k=0;k<n;k++)
{
s=s+a[i][k]*b[k][j];
c[i][j]=s;
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
printf("%4f ",c[i][j]);
}
printf("\n");
}
}

void zhuan()
{
int m,n;
float a[20][20],b[20][20];
int i,j;

printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);

printf("请输入一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);

for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
b[i][j]=a[j][i];
printf("%4f ",b[i][j]);
}
printf("\n");
}
}

void qiuni()
{
int N;
printf("输入矩阵的阶数N:\n");
scanf("%d",&N);
float a[10][10],b[10][20],c[10][10],t;
int i,j,m;
printf("请输入行列式不为0的矩阵A(%d阶):\n",N); //矩阵A的各元素存入二维数组a中。
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%f",&a[i][j]);
//增广矩阵(A|E)存入二维数组b中
for(i=0;i<N;i++)
for(j=0;j<N;j++)
b[i][j]=a[i][j];

for(i=0;i<N;i++)
for(j=N;j<2*N;j++)
b[i][j]=0;

for(i=0;i<N;i++)
b[i][N+i]=1;

for(m=0;m<N;m++) //对每行进行处理。
{
t=b[m][m]; //预存b[m][m]。
i=m;
while(b[m][m]==0)
{
b[m][m]=b[i+1][m];
i++;
}

if(i>m)
{
b[i][m]=t; //实现交换。

//交换其它各列相应位置的元素
for(j=0;j<m;j++)
{
t=b[m][j];
b[m][j]=b[i][j];
b[i][j]=t;
}
for(j=m+1;j<2*N;j++)
{
t=b[m][j];
b[m][j]=b[i][j];
b[i][j]=t;
}

}

for(i=m+1;i<N;i++)
for(j=2*N-1;j>=m;j--)
b[i][j]-=b[i][m]*b[m][j]/b[m][m]; //m=0时,将第一行的-b[i][0]/b[0][0]倍加到以下各行。这样以下每行第一个元素b[i][0]就为0。

for(j=2*N-1;j>=m;j--)
b[m][j]/=b[m][m]; //对第m行作行变换,同除以b[m][m],使b[m][m]为1。

}

printf("第一步变换后得到的增广矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<2*N;j++)
printf("%3.5f ",b[i][j]);
printf("\n"); //实现了:每个i对应一个换行。
}

m=N-1;
while(m>0)
{
for(i=0;i<m;i++)
for(j=2*N-1;j>=m;j--) //千万注意,此处j必须递减,否则b[i][m]先变为0,后面的计算就无效!
b[i][j]-=b[i][m]*b[m][j];
m--;
}

printf("最后得到的增广矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<2*N;j++)
printf("%3.5f ",b[i][j]);
printf("\n"); //实现了:每个i对应一个换行。
}

for(i=0;i<N;i++) //将逆矩阵存入二维数组c中。
for(j=0;j<N;j++)
c[i][j]=b[i][N+j];

printf("故逆矩阵为:\n");

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%3.5f ",c[i][j]);
printf("\n"); //实现了:每个i对应一个换行。
}

}

main()
{
int w;
printf("1矩阵加法\n");
printf("2矩阵减法\n");
printf("3矩阵乘法\n");
printf("4矩阵转置\n");
printf("5矩阵求逆\n");
printf("\n");
printf("请选择要进行的运算:");
scanf("%d",&w);

switch(w)
{
case 1:jiafa();break;
case 2:jianfa();break;
case 3:chengfa();break;
case 4:zhuan();break;
case 5:qiuni();break;
}

return 0;
}

热点内容
饥荒服务器如何更新模组 发布:2025-07-13 12:08:36 浏览:34
java培训单位哪家好 发布:2025-07-13 12:06:56 浏览:959
华为平板迅雷存储位置 发布:2025-07-13 11:54:44 浏览:713
javaweb经典 发布:2025-07-13 11:50:25 浏览:417
屏幕切换器怎么配置 发布:2025-07-13 11:49:43 浏览:246
我与预算法 发布:2025-07-13 11:20:28 浏览:427
线谱算法 发布:2025-07-13 11:17:15 浏览:839
怎么把文件上传百度云 发布:2025-07-13 11:09:18 浏览:557
光遇安卓玩家如何加苹果玩家 发布:2025-07-13 11:08:21 浏览:478
安卓哪里下载破解游戏 发布:2025-07-13 11:02:30 浏览:325