写一个3*5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。指针还没教。。。

写一个3*5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。指针还没教。。。,第1张

#include <stdioh>

void main()

{

int i,j,a[3][5];

printf("请输入15个数\n");

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

{

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

{

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

}

}

printf("原矩阵为\n");

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

{

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

{

printf("%d\t",a[i][j]);

}

printf("\n");

}

printf("转置以后的结果\n");

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

{

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

{

printf("%d\t",a[i][j]);

}

printf("\n");

}

}

1、设A为m×n阶矩阵(即m行n列),第i行j列的元素是a(i,j),即:A=a(i,j)。

2、A的转置为这样一个n×m阶矩阵B,满足B=b(j,i),即a(i,j)=b(j,i)(B的第i行第j列元素是A的第j行第i列元素),记A'=B。

3、直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。

矩阵转置 *** 作设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:A=a(i,j),定义A的转置为这样一个n×m阶矩阵B,满足B=a(j,i),即 b (i,j)=a (j,i)(B的第i行第j列元素是A的第j行第i列元素),记A'=B。(有些书记为AT=B,这里T为A的上标)直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。

矩阵英文:Matrix,本意是子宫、控制中心的母体、孕育生命的地方。在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵概念在生产实践中也有许多应用,比如矩阵图法以及保护个人帐号的矩阵卡系统(由深圳网域提出)等等。“矩阵”的本意也常被应用,比如监控系统中负责对前端视频源与控制线切换控制的模拟设备也叫矩阵。

写了2种。

第一种 数组a[3][4] 转置为 b[4][3]。第2种 数组mn 转置为 [nm]。

#include<stdioh>

void change(int a[3][4],int b[4][3]){

int i,j ;

for (i=0;i<3;i++) for (j=0;j<4;j++) b[j][i]=a[i][j];

}

void change2(int a,int t,int m, int n){

int i,j;

for (j=0;j<n;j++) for (i=0;i<m;i++) t[jm+i]=a[in+j];

}

int main() {

int a[3][4]={11,12,13,14,21,22,23,24,31,32,33,44 },b[4][3];

int x[3][4]={41,42,43,44,51,52,53,54,61,62,63,64 },y[4][3];

int i,j;

printf("input a[3][4] data:\n");

for (i=0;i<3;i++) for (j=0;j<4;j++) scanf("%d",&a[i][j]);

printf("before\n");

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

for (j=0;j<4;j++)printf("%d ",a[i][j]); printf("\n");

}

change(a,b); printf("after\n");

for (i=0;i<4;i++) {

for (j=0;j<3;j++)printf("%d ",b[i][j]); printf("\n");

}

printf("\nbefore\n");

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

for (j=0;j<4;j++)printf("%d ",x[i][j]); printf("\n");

}

change2(&x[0][0],&y[0][0],3,4);

for (i=0;i<4;i++) {

for (j=0;j<3;j++)printf("%d ",y[i][j]); printf("\n");

}

return 0;

}

错误1:

void temp(void),括号里是void,没有形参,因此无法把主函数的实参传给函数的实参。

错误2:

temp();

括号里为空,没有实参,因此无法把主函数的实参传给函数的实参。

错误3:

for(j=0;j<4;j++),i从0到3,j从0到4,等于没有转置,还是原来的数组。

给出正确的代码(在你的程序代码的基础项修改):

#include <stdioh>

void temp(int a[4][4])

{

int i,j,t;

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

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

{

t=a[i][j];

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

a[j][i]=t;

}

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

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

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

printf("\n");}

}

void main(void)

{

int s[4][4],i,j;

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

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

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

printf("\n");

temp(s);

}

Private Sub Form_Click()

Dim n, m, i, j, Matrix(), Cache() As Integer

n = CInt(InputBox("请输入矩阵行数N", "矩阵置换"))

m = CInt(InputBox("请输入矩阵列数M", "矩阵置换"))

ReDim Matrix(n - 1, m - 1)

ReDim Cache(m - 1, n - 1)

'录入

For i = 0 To n - 1

For j = 0 To m - 1

Matrix(i, j) = CInt(InputBox("请输入矩阵项(" & (i + 1) & "," & (j + 1) & ")", "矩阵置换"))

Next

Next

'转置

For i = 0 To n - 1

For j = 0 To m - 1

Cache(j, i) = Matrix(i, j)

Next

Next

'输出转置前的矩阵

Print "转置前的矩阵为:"

For i = 0 To n - 1

For j = 0 To m - 1

Print Matrix(i, j);

Next

Print

Next

Print

'输出转置后的矩阵

Print "转置后的矩阵为:"

For i = 0 To m - 1

For j = 0 To n - 1

Print Cache(i, j);

Next

Print

Next

End Sub

给你改了一下程序,加分就不用了,呵呵很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址

#include<stdioh>

#define N 3

int array[N][N];

void main()

{

//在主函数内声明被调函数

void convert(int array[][3]);

int i,j;

printf("输入数组:\n");

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

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

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

printf("\n");

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

{

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

printf("%d\t",array[i][j]);

printf("\n");

}

//调用矩阵转置函数

convert(array);

printf("\n");

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

{

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

printf("%d\t",array[i][j]);

printf("\n");

}

}

void convert(int array[][3])

{

int i,j,t;

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

for(j=0;j<N;j++)//设置数组中转置矩阵元素交换

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

#include <stdioh>

#include <conioh>

#include <stdlibh>

#define MAX 20

int main()

{

int i,j,n;

int data[MAX][MAX];

int temp;

printf("输入行列数\n");

scanf("%d",&n);

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

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

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

printf("\n");

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

{

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

printf("%8d ",data[i][j]);

printf("\n");

}

printf("重新输出矩阵\n");

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

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

{

temp=data[i][j];

data[i][j]=data[j][i];

data[j][i]=temp;

}

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

{

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

printf("%8d ",data[i][j]);

printf("\n");

}

getch();

return 0;

}

这是我以前写的,不知道是不是你要的。没说清啊

以上就是关于写一个3*5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。指针还没教。。。全部的内容,包括:写一个3*5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。指针还没教。。。、转置矩阵怎么求、矩阵怎么进行转置 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9823041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存