急!C语言二维矩阵转置

作者&投稿:蹉晨 (若有异议请与网页底部的电邮联系)
C语言二维矩阵转置~

1.proc函数种少了一对括号: for(j=i;j<3;j++)

{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
2.这个函数是值传递,没有输出,不能实现目的,2中改进办法:1用指针传递。2把输出循环放入proc函数中.
#include
void proc(int a[3][3])
{
int t,i,j;
for(i=0;i<3;i++)

for(j=i;j<3;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("%7d",a[i][j]);
printf("
");}

}
void main()
{
int arr[3][3]={{1,1,1},{4,4,4},{7,7,7}};
proc(arr);
}

#include
#include
#define M 5
#define N 5
int getdata(int (*sp)[M]);
void outdata1(int a[M][N]);
void outdata2(int b[N][M]);

int getdata(int (*sp)[M])
{
int i,j,x;
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
{
x=rand()%100;
sp[i][j]=x;
}
}
return sp[i][j];
}

void outdata1(int a[M][N])
{
int i,j;
printf("Output 1:
");
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("
");
}
}

void outdata2(int a[M][N])
{
int i,j;
int b[N][M];
printf("Output 2:
");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
b[i][j]=a[j][i];
printf("%4d",b[i][j]);
}
printf("
");

}
}

void main()
{
int a[M][N];
a[M][N]=getdata(a);
outdata1(a);
outdata2(a);
}
你这样写吧,你在mian函数里面给b[N][M]赋值是不成功的(它没有被调到函数里去赋值,而是只赋了一次),既然有了函数那么你只需要定义一个数组就行了,outdata2(b)这个函数我做了些修改,接受的参数仍然是a[M][N]而不是a[N][M]。要不然若M,N不相等那么你这个数组就越界了。仔细琢磨下吧。

1 #include <stdio.h>
2 #define MAXSIZER 3
3 #define MAXSIZEL 4
4 void Transpose (int Mat[MAXSIZER][MAXSIZEL],int Transp[MAXSIZEL][MAXSIZER],int RM,int CT) {
5
6 int r,c;
7 for(r=0;r<(RM);r++){
8 for(c=0;c<(CT);c++){
9 Transp[c][r]=Mat[r][c];
10 }
11 }
12
13 }
14
15 void PrMat(int a[MAXSIZEL][MAXSIZER])
16 {
17 int i,j;
18 for (i=0;i<MAXSIZEL;++i){
19 for (j=0;j<MAXSIZER;++j)
20 printf("%d\t",a[i][j]);
21 putchar('\n');
22 }
23 }
24
25 int main()
26 {
27 //int RsizeM, CsizeM;
28 //int RsizeTr, CsizeTr;
29 int MatMain[MAXSIZER][MAXSIZEL]={1,2,3,4,5,6,7,8,9,10,11,12};
30 int MatTransp[MAXSIZEL][MAXSIZER];
31
32 Transpose(MatMain, MatTransp, MAXSIZER,MAXSIZEL);
33 PrMat(MatTransp);
34 return 0;}

#include <stdio.h>

#define MAXSIZER 3
#define MAXSIZEL 4

void Transpose (int Mat[MAXSIZER][MAXSIZEL],int Transp[MAXSIZEL][MAXSIZER],int RM,int CT) {

int r,c;
for(r=0;r<(RM);r++){
for(c=0;c<(CT);c++){
Transp[c][r]=Mat[r][c];
}
}

}
void PrMatOld(int a[MAXSIZEL][MAXSIZER])
{
int i,j;
for (i=0;i<MAXSIZER;++i)
{
for (j=0;j<MAXSIZEL;++j)
printf("%d\t",a[i][j]);
printf("\n");
}
}

void PrMat(int a[MAXSIZEL][MAXSIZER])
{
int i,j;
for (i=0;i<MAXSIZEL;++i)
{
for (j=0;j<MAXSIZER;++j)
printf("%d\t",a[i][j]);
printf("\n");
}
}

void main()
{
int RsizeM=3, CsizeM=4;
int RsizeTr, CsizeTr;
int MatMain[MAXSIZER][MAXSIZEL]={
1 ,2 ,3,
4 ,5 ,6,
7 ,8 ,3,
2 ,1 ,4
};
int MatTransp[MAXSIZEL][MAXSIZER];

PrMatOld(MatMain);

Transpose(MatMain, MatTransp, RsizeM, CsizeM);

printf("\n\n");
PrMat(MatTransp);

getch();
/*PrMatOld函数作用是打印原矩阵到屏幕*/
/*PrMat函数作用是打印转换后的矩阵到屏幕*/

}

#include<stdio.h>
#include<stdlib.h>

int main()
{
int a[3][4],i,j,b[4][3];
for(i=0;i<=2;i++)
{for (j=0;j<=3;j++)
scanf("%d",&a[i][j]);}
for(i=0;i<=2;i++)
{for(j=0;j<=3;j++)
{printf("%d ",a[i][j]);
b[j][i]=a[i][j]; }
printf("\n");}

printf("\n\n");

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


急!C语言二维矩阵转置
1 #include <stdio.h> 2 #define MAXSIZER 3 3 #define MAXSIZEL 4 4 void Transpose (int Mat[MAXSIZER][MAXSIZEL],int Transp[MAXSIZEL][MAXSIZER],int RM,int CT) { 5 6 int r,c;7 for(r=0;r<(RM);r++){ 8 for(c=0;c<(CT);c++){ 9 Transp[c][r]=...

c语言中二维数组如何实现矩阵转换
for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) {int temp=a[i,j];a[i,j]=a[j,i];a[j,i]=temp;}如果是一个M*N的矩阵的话,就需要重新组织数组了,但是原理差不多

用c语言将二维数组a表示的3x5矩阵进行转置
```c include <stdio.h> int main() { int a[3][5] = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}};int transposed[5][3];\/\/ 对矩阵进行转置 for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { transposed[j][...

C语言将一个二维矩阵所有元素转置
include<math.h> int main(){ int i,j,x,y;double a[100][100],b[100][100];printf("请输入行数列数\\n");scanf("%d%d",&x,&y);printf("请输入数字\\n");for(i=0;i<x;i++)for(j=0;j<y;j++){ scanf("%lf",&a[i][j]);b[i][j]=pow(a[i][j],1.0\/3.0);...

用C语言编写程序,将下列一个二维矩阵实现其串行化,即转变成一维向量...
include<stdio.h>#define N 3main(){int onedim[N*N];int twodim[N][N]={ 1 , 3 , 5 , 9 , 7 , 6 , 10, 11, 13}; \/\/二维数组初始化int i , j , k = 0 ;for ( i = 0 ; i < N ; i++){\/\/根据行判断循环方向 偶数行从前向后 奇数行从后向前if ( i %...

c语言二维数组4X5转置矩阵,帮我看看哪儿错了
\/\/ 被转置的矩阵应该是方阵,非方阵的转置貌似没有代数意义。\/ 请输入矩阵的行列数:3 4 您输入的是一个(3*4)矩阵 1 2 3 4 5 6 7 8 9 0 2 3 转置矩阵为:1 5 9 2 6 0 3 7 2 4 8 3 Press any key to continue \/ include <stdio.h>#define N 20int main(void) {int sz...

大一学生的C语言问题,请大神指点:在主函数中定义一个二维数组,并输入一...
以一个3*3的矩阵为例说明矩阵转置 include <stdio.h> int main(){ int a[3][3];int temp,i,j;\/\/输入 printf("请输入一个3*3的矩阵,回车键换行:\\n");for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]);} getchar();} \/\/转置 for(i=0;i<3;i++)...

用C语言指针转置一个二维矩阵
scanf("%d",&a[i][j]); zhuanzhi( ( int * )a ); \/\/将二维数组强制转换成指针.传递给函数. for(i=0;i<3;i++){ for(j=0;j<3;j++)printf("%d ",a[i][j]);printf( "\\n" ); \/\/加个回车.效果会明显些.} getch();}void zhuanzhi(int * p){ int i,j,t;for(...

C语言中如何编程:将两行三列的二维数组转换为三行两列的二维数组?
利用矩阵转置就行 include <stdio.h> define MAX 20 int m,n;void transpose(double a[][MAX],double b[][MAX]){ int i,j;for(i=0;i<MAX;i++)for(j=0;j<MAX;j++)b[i][j]=a[j][i];} void main(){ int i,j;double a[MAX][MAX],b[MAX][MAX];puts("输入矩阵的行,...

如何用C语言编一个程序,输入一个二维数组,然后以一个矩阵的方式输出...
int array[3][3], (*pArr)[3], *p[3], i, j, sum;srand(time(NULL));for(i=0; i<3; i++)for(j=0; j<3; j++)array[i][j] = rand()%100+0;pArr = array;for(i = 0; i < 3; i++)for(j = 0; j < 3; j++){ printf("%d\\t", pArr[i][j]);if(j =...

南通市15251903209: 用C语言指针转置一个二维矩阵 -
管仇怡诺: 在zhuanzhi()这个函数里,通过指针p访问p[i][j]的方法是*(p + i * 3 + j)不过你这个函数写的不对.

南通市15251903209: c语言 实现二维矩阵的转置 -
管仇怡诺: #include <stdio.h> #include <stdlib.h> #define M 5 #define N 5 int getdata(int (*sp)[M]); void outdata1(int a[M][N]); void outdata2(int b[N][M]);int getdata(int (*sp)[M]) {int i,j,x;for (i=0;i<M;i++){for (j=0;j<N;j++){x=rand()%100;sp[i][j]=x;}}return ...

南通市15251903209: C语言二维矩阵转置 -
管仇怡诺: 1.proc函数种少了一对括号: for(j=i;j<3;j++) { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t;}2.这个函数是值传递,没有输出,不能实现目的,2中改进办法:1用指针传递.2把输出循环放入proc函数中.#include<stdio.h> void proc(int a[3][3]) { int t,i,j; for(i=0;i<3;i++) for...

南通市15251903209: 急!!!!!在线等!C语言 定义一个二维数组来存放一个矩阵,然后将矩阵转置输出 -
管仇怡诺: #include"stdio.h" int main() {int i,j,a[3][4];for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(j=0;j<4;j++){for(i=0;i<3;i++)printf("%d ",a[i][j]);printf("\n");}return 0; } 你自己再琢磨一下吧..

南通市15251903209: c语言编写一个程序,实现一个3*4矩阵转置. -
管仇怡诺: 思路:定了两个二维数组分别存储转置前后的矩阵,接着for循环依次转置即可.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24//参考代码 #include<stdio.h> intmain() {inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[4][3];inti,j;for(...

南通市15251903209: C语言新手求助啊!关于矩阵转置操作! -
管仇怡诺: 如果要用户来输入数组a的大小的话,要用动态数组. #include<stdio.h> #include<stdlib.h> #include<time.h> int main() {int i,j,n,**a;//定义指向指针的指针,即表示二维数组名srand((int)time(0));printf("please enter a number.\n");scanf("%...

南通市15251903209: 作业题:急:帮忙啊!如何用C编程求转置矩阵 -
管仇怡诺: 我记得AT = A * 左下到右上对角线元素为1的矩阵 所以只要使用矩阵乘法就可以了. #include <stdio.h> #include <stdlib.h>void print(int m, int p, int *p4); /*函数声明*/int main() { int test_num = 0; /*要计算的次数*/ int comp_times = 0; /*已经执...

南通市15251903209: 关于C语言矩阵的转置 -
管仇怡诺: #include <stdio.h> int main() {int a[3][3]={1,2,3,4,5,6,7,8,9};int i,j,t;for(i=0;i<2;i++){for(j=1;j<3;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("%2d",a[i][j]);}printf("\n");}return 0; }

南通市15251903209: c语言 输入一个二维数组,转置后输出 -
管仇怡诺: #include using namespace std; main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; for(int i=0;i for(int j=0;j { cout if(j==2)cout } main() { int a[3]={1,2,3}; int i; for(i=0;iprintf("%d",a[i]); getch(); } 为啥我的这个输出结果是-34,我想输出来是1 2 3的.改了就对了

南通市15251903209: 用C语言实现矩阵转置 -
管仇怡诺: //Transpose #include <stdio.h> #define MAX 20 int m,n; void transpose(double a[][MAX],double b[][MAX]) {int i,j;for(i=0;i<MAX;i++)for(j=0;j<MAX;j++)b[i][j]=a[j][i]; }void main() {int i,j;double a[MAX][MAX],b[MAX][MAX];puts("Please input the...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网