
C语言 ,求转置矩阵
#include<stdio.h>#include<conio.h>intfun(intarray[3][3]){intarray1[3][3];inti,j;for(i...
#include <stdio.h>
#include <conio.h>
int fun(int array[3][3])
{
int array1[3][3];
int i,j;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
array1[i][j] = array[j][i];
}
}
return array1[3][3];
}
void main()
{
int i, j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf("%d\t",array[i][j]);
printf("\n");
}
}
fun(array);
printf("converted array:\n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
这是我的代码,但是结果还是源矩阵,哪个地方出错了? 展开
#include <conio.h>
int fun(int array[3][3])
{
int array1[3][3];
int i,j;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
array1[i][j] = array[j][i];
}
}
return array1[3][3];
}
void main()
{
int i, j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf("%d\t",array[i][j]);
printf("\n");
}
}
fun(array);
printf("converted array:\n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
这是我的代码,但是结果还是源矩阵,哪个地方出错了? 展开
2个回答
展开全部
根据数学定义可以知道,对于矩阵P,其第m行n列上的元素,是其转置矩阵的n行m列元素。
从此可以得出程序如下:
#define M 10
#define N 5
//以10行5列为例,可以任意修改。
void convert(int a[M][N], int b[N][M])//求a的转置矩阵,结果存于b中。
{
int i,j;
for(i = 0; i <M; i ++)
for(j = 0; j < N; j ++)
b[j][i] = a[i][j];//转置运算。
}
展开全部
已通过测试,望采纳。
不懂追问哈
#include <stdio.h>
#include <conio.h>
void fun(int array[3][3])
{
int array1[3][3];
int i,j,t;
for (i=0;i<3;i++)
{
for (j=0;j<i;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
}
void main()
{
int i, j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
fun(array);
printf("converted array:\n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
不懂追问哈
#include <stdio.h>
#include <conio.h>
void fun(int array[3][3])
{
int array1[3][3];
int i,j,t;
for (i=0;i<3;i++)
{
for (j=0;j<i;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
}
void main()
{
int i, j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
fun(array);
printf("converted array:\n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
追问
跟冒泡法一样添加一个中间变量?
追答
对,添加中间变量交换两个数的值很普遍,不止冒泡法用,凡是交换两个数的值都需要,转置矩阵不就需要行列交换么
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询