输入N*N的矩阵,输出它的转置矩阵?

样例输入

2
1 2
1 2

样例输出

1 1
2 2

我的代码如下:

#include <stdio.h> 
#define N 100
int main()
{
    int i,j,a[N][N],n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
       for(j=0;j<n;j++)
       {
        scanf("%d",&a[i][j]);
       }
    for(i=0;i<n;i++)
       for(j=0;j<n;j++)
       {
        printf("%d ",a[j][i]);
        printf("\n");
        return 0;
       }

}

我的输出都成一行了。
麻烦帮我调试修改一下,谢谢大佬!

weixin_45904768
是一只有梦想的咸鱼 #include <stdio.h> #define N 100 int main() { int i,j,a[N][N],n; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) { scanf("%d",&a[i][j]); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",a[j][i]); } printf("\n"); } return 0; }已解决,哈哈哈,打扰了
7 个月之前 回复

2个回答

#include <stdio.h> 
#define N 100
int main()
{
    int i,j,a[N][N],n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
       for(j=0;j<n;j++)
       {
        scanf("%d",&a[i][j]);
       }
    for(i=0;i<n;i++)
    {
       for(j=0;j<n;j++)
        printf("%d ",a[j][i]);
        printf("\n");
    }
    return 0;
}

问题解决的话,请点一下采纳

weixin_45904768
是一只有梦想的咸鱼 哈哈哈,后来我想到了,还是谢谢您啦
7 个月之前 回复

只输出一行吗,那是当然的,因为return0直接停掉程序了,不可能继续循环,把printf("\n")移动到for(j=0,j<n,j++)循环体外for(i=0,i<n,i++)循环体内的位置,return 0移动到最后

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言:运用指针,输出3*3矩阵的转置阵。大佬们帮忙看看哪里出问题了

``` #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { void fun(int *x); int a[3][3],i; int *p=&a[0][0]; printf("请输入一个整形矩阵:"); for(i=0;i<3;i++) { scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]); } fun(p); printf("输出转置矩阵:\n"); for(i=0;i<3;i++) { printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]); } return 0; } void fun(int *x) { int m,n,s; for(m=0;m<3;m++) { for(n=0;n<3;n++) { s=*(x+3*m+n); *(x+3*m+n)=*(x+3*n+m); *(x+3*n+m)=s; } } } ``` 输入:1 2 3 4 5 6 7 8 9 输出:1 2 3 4 5 6 7 8 9 结果依然是原矩阵,是哪一步出问题了呢?

最小二乘中为什么 矩阵的平方=矩阵的转置 * 矩阵本身

![图片说明](https://img-ask.csdn.net/upload/202005/29/1590762759_580154.png) 矩阵的平方 为什么等于矩阵的转置* 矩阵本身

c语言简单题,求矩阵的转置矩阵

![图片说明](https://img-ask.csdn.net/upload/201901/04/1546611499_210346.png) 我的答案: ``` #include <stdio.h> #define N 10 void Transpose(int (*a)[N], int n); void Swap(int *x, int *y); void InputMatrix(int (*a)[N], int n); void PrintMatrix(int (*a)[N], int n); void InputMatrix(int (*a)[N], int n) { int i,j; for(i = 0;i < n ;i++) { for(j = 0;j < n; j++) { scanf("%d",&a[i*n + j]); } } } void Transpose(int (*a)[N], int n) { int i,j; for(i = 0;i < n ;i++) { for(j = 0;j < n; j++) { Swap(&a[i*n + j], &a[j*n + i]); } } } void Swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } PrintMatrix(int (*a)[N], int n) { int i,j; for(i = 0;i < n ;i++) { for(j = 0;j < n ; j++) { printf("%d\t", *a[i*n + j]); } printf("\n"); } } int main() { int n,s[N][N]; printf("Input n:"); scanf("%d",&n); printf("Input %d*%d matrix:\n",n,n); InputMatrix( s, n); Transpose( s, n); printf("The transposed matrix is:\n"); PrintMatrix( s, n); return 0; } ``` 请问哪里错了?该怎么改?

Java语言定义一个4x4的二维数组,然后从键盘输入16个数字构成矩阵,然后将转置矩阵输出出来

Java语言定义一个4x4的二维数组,然后从键盘输入16个数字构成矩阵,然后将转置矩阵输出出来 在线等

编写函数zhuanz(int (*p)[4]) 用行指针作参数实现矩阵转置

/*在主函数中定义整型数组a[4][4],从键盘输入值赋给数组元素后,调用zhuanz函数将a数组转置,并输出转置后的数组。*/ #include<stdio.h> #include<stdlib.h> main() {/************found************/ } zhuanz(int (*p)[4]) {/************found************/ }/*萌新崩溃,还有就是*(p)[4]和*p[4]什么区别,,*/

三元组法求矩阵的转置,并输出转置矩阵,出现如图的错误,为啥啊?求大神指点迷津

#include<stdio.h> //#include<stdlib.h> #define MAXSIZE 12500 #define ok 1 typedef int ElemType; typedef int status; typedef struct { int ru,cu; ElemType e; }Triple ; typedef struct { Triple data[MAXSIZE+1]; int m,n,t; }TSMatrix; status Transpose(TSMatrix M,TSMatrix T){ int q,col,p; T.m=M.n;T.n=M.m;T.t=M.t; if(T.t){ q=1; for(col=1;col<=M.n;col++) { for(p=1;p<=M.m;p++) { if(M.data[p].cu==col){ T.data[q].ru=M.data[p].cu; T.data[q].cu=M.data[p].ru; T.data[q].e=M.data[p].e; q++; } } } return ok; } void main() { int i,j,c,r; int a[10][10]; printf("请输入矩阵行数和列数\n"); scanf("%d %d",&r,&c); printf("请输入矩阵\n"); for(i=1;i<=r;i++) { for(j=1;j<=c;j++) { scanf("%d",&a[i][j]); } } TSMatrix M,T; M.m=r;M.n=c;M.t=1; for(i=1;i<=r;i++) { for(j=1;j<=c;j++) { if(a[i][j]) { M.data[M.t].ru=i; M.data[M.t].cu=j; M.data[M.t].e=a[i][j]; M.t++; } } } Transpose(M,T); int x=1,b[c][r]; for(i=1;i<=c;i++) for(j=1;j<=r;j++) { if(T.data[x].i==i&&T.data[x].j==j) { b[i][j]=T.data[x].e; x++; } else b[i][j]; } for(i=1;i<=r;i++) { for(j=1;j<=c;j++) printf("%d",b[i][j]); printf("\n"); } }![图片](https://img-ask.csdn.net/upload/201710/12/1507819652_454000.jpg)

矩阵转置用指针作为函数参数,为什么输出结果这么奇怪?

#include <stdio.h> #include <stdlib.h> #define N 3 #define M 3 /*238-4.编写一个函数(参数用指针)将一个3×3矩阵转置。*/ void matrixtranspose(int (*p)[M],int(*p1)[M]) { int i,j; for(i=0;i<N;i++) { for(j=0;j<M;j++) { *(*(p1+j)+i)=*(*(p+i)+j); } } } void display(int (*p)[M]) { int i,j; for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%2d",*(*(p+i)+j)); } printf("\n"); } } int main() { int i,j,(*p)[M],a[N][M]={0},(*p1)[M]; for(i=0;i<N;i++) { for(j=0;j<M;j++) { scanf("%d ",&a[i][j]); } } p=a; display(p); p1=a; matrixtranspose(p,p1); display(p1); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201912/01/1575191572_284980.png) ``` ```

请问为什么我的矩阵输出全为0?

把矩阵 A 的行换成相应的列,得到的新矩阵称为 A 的转置矩阵。现在给定任意的一个 n 阶方阵 S , 求出其转置矩阵. 输入描述第一行给定一个正整数 n (2 < n < 100). 接下来有 n 行,每行 n 个整数,代表方阵中第 i 行第 j 列的数. 输出描述 输出该方阵的转置矩阵. 注意数字与数字之间用空格分开,每行最后一个数字后面仅跟换行符. 样例输入 3 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 6 9 #include<stdio.h> #define N130 int main () { int N,i,j,r,a[N][N],b[N][N],t; scanf("%d",&N); if(N>2&&N<130) { for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0;i<=N;i++) for(j=0;j<=N;j++) b[i][j]=a[j][i]; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(j<N-1) printf("%d ",b[i][j]); else printf("%d ",b[i][j]); } printf("\n"); } } return 0; }

java用编写一个4*4矩阵程序,并要求行列能够互换

各位大神帮帮忙,请编写一个程序,要求能够对一个4*4的矩阵进行行列互换,非常感谢!

请问能指点一下矩阵转置和矩阵相加吗?

我对矩阵的输入输出以及加减乘,转置,旋转的原理有些不明白,希望可以得到解答,谢谢!

求大神解答一下c++的题,重载运算符+,-,*,求矩阵的运算,做了好久没做出来

<textarea readonly="readonly" name="code" class="c++"> ``` #include<iostream.h> #include<iomanip.h> class operation {public: static void rank(); //输入阶数 void array(); //输入矩阵 void display(); friend operation operator +(operation &,operation &); friend operation operator -(operation &,operation &); friend operation operator *(operation &,operation &); private: int a[50][50]; static int n; }; void operation::rank() {cin>>n;} void operation::array() { for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>a[i][j]; } operation operator +(operation &a1,operation &a2) { operation a3; for(int i=0;i<operation::n;i++) for(int j=0;j<operation::n;j++) a3.a[i][j]=a1.a[i][j]+a2.a[i][j]; return a3; } operation operator -(operation &a1,operation &a2) { operation a3; for(int i=0;i<operation::n;i++) for(int j=0;j<operation::n;j++) a3.a[i][j]=a1.a[i][j]-a2.a[i][j]; return a3; } operation operator *(operation &a1,operation &a2) { operation a3; for(int k=0;k<operation::n;k++) { for(int i=0;i<operation::n;i++) { for(int j=0;j<operation::n;j++) a3.a[k][i]+=a1.a[k][j]*a2.a[j][i]; } } return a3; } void operation::display() { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) cout<<setw(10)<<operation::a[i][j]; cout<<endl; } } int operation::n; #include"operation.h" int main() { operation a1,a2,a3; cout<<"piease input rank:"; operation::rank(); cout<<"please input a1:"<<endl; a1.array(); cout<<"please input a2:"<<endl; a2.array(); cout<<"a1+a2:"<<endl; a3=a1+a2; a3.display(); cout<<"a1-a2:"<<endl; a3=a1-a2; a3.display(); cout<<"a1*a2:"<<endl; a3=a1*a2; a3.display(); return 0; } ``` </textarea>

Java语言,实现矩阵的转置的算法怎么实现,怎么按照行列输入矩阵?

Java语言,实现矩阵的转置的算法怎么实现,怎么按照行列输入矩阵?

矩阵转置:求解释为什么矩阵转置不成功,还是原来的矩阵

#include <iostream> using namespace std; const int row = 2; const int column = 2; void PrintMatrix(int m[][column]); void ReverseMatrix(int matrix[][column]); void main() { cout<<"请输入"<<(row * column)<<"个数字"<<endl; int matrix[row][column]; for(int i = 0; i < row; ++i) { for(int j = 0; j < column; ++j) { cin>>matrix[i][j]; } } PrintMatrix(matrix); ReverseMatrix(matrix); cout<<"转置后:"<<endl; PrintMatrix(matrix); } void PrintMatrix(int matrix[][column]) { for(int i = 0; i < row; i++) { for(int j = 0; j < column; j++) { cout<<matrix[i][j]<<" "; } cout<<endl<<endl<<endl; } } void ReverseMatrix(int matrix[][column]) { for(int i = 0; i < row; i++) { for(int j = 0; j < column; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } } //求解释为什么矩阵转置不成功,还是原来的矩阵

请问我的矩阵转置为什么输出后只把最后一行重复三遍?

#include<stdio.h> int main () { int N,i,j,a[N][N],b[N][N],t; scanf("%d",&N); while(N--) { for(i=0;i<=N;i++) for(j=0;j<=N;j++) scanf("%d",&a[i][j]); for(i=0;i<=N;i++) for(j=0;j<=N;j++) b[i][i]=a[N-1-j][i]; for(i=0;i<=N;i++) { for(j=0;j<=N;j++) printf("%d",b[i][j]); printf("\n"); } } return 0; }

(c语言)编写一个函数,由实参传来一个矩阵 A[M][N],按列输出它每一列上最大值和最小值 的差

``` #include<stdio.h> int main() {void judge(int a[10][10],int m,int n); int m,n; printf("请输入矩阵的行数和列数:\n"); scanf("%d%d",&m,&n); int a[m][n],i,j; printf("enter the matrix:\n"); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); judge(a,m,n); return 0; } void judge(int a[10][10],int m,int n) {int max,min,i,j; for(j=0;j<n;j++) {max=a[0][j];min=a[0][j]; for(i=1;i<m;i++) {if(max<a[i][j]) max=a[i][j]; if(min>a[i][j]) min=a[i][j]; } printf("第%d列最大值和最小值的差是%d\n",j+1,max-min); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201904/26/1556284345_790043.png) 为什么不对,求大佬解答?

mpi并行计算矩阵转置时间远慢于串行 为什么

如题,进行并行计算课程实验时利用mpi编程在学校服务器上进行程序运行计算10000*10000矩阵转置计算 代码如下 ``` #include "stdio.h" #include "stdlib.h" #include "mpi.h" #include "math.h" #define E 0.0001 #define a(x,y) a[x*m+y] #define b(x,y) b[x*m+y] #define A(x,y) A[x*size+y] #define B(x,y) B[x*size+y] #define intsize sizeof(int) #define floatsize sizeof(float) #define charsize sizeof(char) int size,N; /* size:±£´æ¾ØÕóÐÐÊý;N:±£´æ¾ØÕóÁÐÊý */ int m; /* ±£´æ×Ó·½ÕóµÄ³ß´ç */ int t; /* ÆåÅÌ»®·ÖµÄ·Ö¸îÊý */ float *A, *B; /* A:±£´æÔ­¾ØÕó;B:±£´æתÖúóµÄ¾ØÕó */ double starttime; /* ±£´æ¿ªÊ¼Ê±¼ä */ double time1; /* ±£´æ·Ö·¢Êý¾ÝµÄ½áÊøʱ¼ä */ double time2; /* ±£´æÔËÐеĽáÊøʱ¼ä */ int my_rank; /* ±£´æµ±Ç°½ø³ÌµÄ½ø³ÌºÅ */ int p; /* ±£´æ½ø³ÌÊý */ MPI_Status status; /* ±£´æMPI״̬ */ FILE *fdA; /* ÊäÈëÎļþ */ /* ÔËÐнáÊøÇ°,µ÷Óñ¾º¯ÊýÊÍ·ÅÄÚ´æ¿Õ¼ä */ void Environment_Finalize(float *a,float *b) { free(a); free(b); } int main(int argc, char **argv) { int i,j,k,my_rank,group_size; float *a,*b; int u,v; float temp; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&group_size); MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); p=group_size; /* Èç¹ûÊÇÖ÷½ø³Ì(rank=0µÄ½ø³Ì),Ôò½øÐжÁÎļþµÄ²Ù×÷, ½«´ýתÖõľØÕó¶ÁÈëÄÚ´æ,±£´æµ½È«¾Ö±äÁ¿AÖÐ */ if(my_rank==0) { starttime=MPI_Wtime(); fdA=fopen("mat_data.txt","r"); /* ¶ÁÈë¾ØÕóµÄÐÐÊýºÍÁÐÊý,²¢±£´æµ½sizeºÍNÖÐ */ fscanf(fdA,"%d %d", &size, &N); /* ÅжÏÊÇ·ñÊÇ·½Õó,Èç¹û²»ÊÇ,³ÌÐòÍ˳ö */ if(size != N) { puts("The input is error!"); exit(0); } A=(float*)malloc(floatsize*size*size); B=(float*)malloc(floatsize*size*size); /* ½«¾ØÕóµÄËùÓÐÖµ¶ÁÈë,±£´æµ½AÖÐ */ for(i = 0; i < size; i ++) { for(j = 0; j < size; j ++) fscanf(fdA, "%f", A+i*size+j); } fclose(fdA); } /* ¹ã²¥¾ØÕóµÄ³ß´ç */ MPI_Bcast(&size,1,MPI_INT,0,MPI_COMM_WORLD); /* »ñµÃÆåÅÌ»®·ÖµÄÊýÄ¿ */ t=(int)sqrt(p); if (t>size) t=size; if(size%t!=0) for(;;) { t--; if(size%t==0) break; } /* »ñµÃʵ¼ÊÀûÓõĴ¦ÀíÆ÷¸öÊý */ p=t*t; /* ÿ¸ö×Ó·½ÕóµÄ³ß´ç */ m=size/t; /* a±£´æ×Ó·½Õó,bÊÇÁÙʱ¾ØÕó,ÊÇÖ÷½ø³ÌÓÃÀ´±£´æ´ý·¢Ë͸ø±ðµÄ½ø³ÌµÄ×Ó·½Õó */ a=(float *)malloc(floatsize*m*m); b=(float *)malloc(floatsize*m*m); if (a==NULL||b==NULL) printf("allocate space fail!"); /* ¶ÔÖ÷½ø³Ì,»ñµÃ×Ô¼ºµÄ×Ó·½Õó(¼´×óÉϽǵÄ×Ó·½Õó) */ if (my_rank==0) { for(i=0;i<m;i++) for(j=0;j<m;j++) a(i,j)=A(i,j); } /* Ö÷½ø³ÌÏòÆäËû½ø³Ì·¢ËÍÊý¾Ý */ if (my_rank==0) { for(i=1;i<p;i++) { v=i/t; /* ×Ó·½ÕóµÄÐкŠ*/ u=i%t; /* ×Ó·½ÕóµÄÁкŠ*/ for(j=v*m;j<(v+1)*m;j++) for(k=u*m;k<(u+1)*m;k++) b((j%m),(k%m))=A(j,k); /* ½«×Ó·½ÕóÔÝ´æÔÚbÖÐ */ /* ½«×Ó·½Õó·¢Ë͵½ÏàÓ¦µÄ½ø³Ì */ MPI_Send(b,m*m,MPI_FLOAT,i,i,MPI_COMM_WORLD); } } else if (my_rank<p) /* ¶ÔÆäËû½ø³Ì,´ÓÖ÷½ø³Ì½ÓÊÕÊý¾Ý */ MPI_Recv(a,m*m,MPI_FLOAT,0,my_rank,MPI_COMM_WORLD,&status); time1=MPI_Wtime(); /* ¶ÔÏÂÈý½ÇµÄ×Ó·½Õó½øÐд¦Àí */ if ((my_rank/t)>(my_rank%t)&&my_rank<p) { v=my_rank/t; /* ÐкŠ*/ u=my_rank%t; /* ÁкŠ*/ /* ·¢ËÍ×Ó·½Õóµ½Î»ÓÚÏàÓ¦ÉÏÈý½ÇλÖõĽø³Ì */ MPI_Send(a,m*m,MPI_FLOAT,(u*t+v),(u*t+v),MPI_COMM_WORLD); /* ´ÓÏàÓ¦ÉÏÈý½ÇλÖõĽø³Ì½ÓÊÕÊý¾Ý */ MPI_Recv(a,m*m,MPI_FLOAT,(u*t+v),my_rank,MPI_COMM_WORLD,&status); } /* ¶ÔÉÏÈý½ÇµÄ×Ó·½Õó½øÐд¦Àí */ if ((my_rank/t)<(my_rank%t)&&my_rank<p) { v=my_rank/t; /* ÐкŠ*/ u=my_rank%t; /* ÁкŠ*/ /* ½«×Ó·½ÕóÔªËظ´ÖƵ½b */ for(i=0;i<m;i++) for(j=0;j<m;j++) b(i,j)=a(i,j); /* ´ÓÏàÓ¦ÏÂÈý½ÇλÖõĽø³Ì½ÓÊÕÊý¾Ý */ MPI_Recv(a,m*m,MPI_FLOAT,(u*t+v),my_rank,MPI_COMM_WORLD,&status); /* ×Ó·½Õó·¢Ë͵½Î»ÓÚÏàÓ¦ÏÂÈý½ÇλÖõĽø³Ì */ MPI_Send(b,m*m,MPI_FLOAT,(u*t+v),(u*t+v),MPI_COMM_WORLD); } /* ¶Ôÿһ¸ö×Ó·½Õó½øÐÐתÖà */ for(i=1;i<m;i++) for(j=0;j<i;j++) { temp=a(i,j); a(i,j)=a(j,i); a(j,i)=temp; } /* Ö÷½ø³Ì¿ªÊ¼½«×ªÖõĽá¹û½øÐÐ×éºÏ ÏȽ«Ö÷½ø³ÌµÄ½á¹û×éºÏµ½BÖÐ×óÉÏ½Ç */ if (my_rank==0) { for(i=0;i<m;i++) for(j=0;j<m;j++) B(i,j)=a(i,j); } /* Ö÷½ø³Ì´ÓÆäËû½ø³Ì½ÓÊÕ½á¹û,×éºÏµ½BµÄÏàӦλÖà */ if (my_rank==0) { for(i=1;i<p;i++) { /* ´ÓÆäËû½ø³Ì½ÓÊÕ½á¹û */ MPI_Recv(a,m*m,MPI_FLOAT,i,i,MPI_COMM_WORLD,&status); v=i/t; /* ½á¹ûµÄÐкŠ*/ u=i%t; /* ½á¹ûµÄÁкŠ*/ for(j=v*m;j<(v+1)*m;j++) for(k=u*m;k<(u+1)*m;k++) B(j,k)=a((j%m),(k%m)); /* ½á¹û×éºÏµ½BµÄÏàӦλÖà */ } } else if(my_rank<p) /* ÆäËû½ø³Ì·¢Ëͽá¹ûµ½Ö÷½ø³Ì */ MPI_Send(a,m*m,MPI_FLOAT,0,my_rank,MPI_COMM_WORLD); /* ÓÉÖ÷½ø³Ì´òÓ¡¼ÆËã½á¹û */ // if (my_rank==0) // { // printf("Input of file \"dataIn.txt\"\n"); // printf("%d\t%d\n", size, size); // for(i=0;i<size;i++) // { // for(j=0;j<size;j++) printf("%f\t",A(i,j)); // printf("\n"); // } // printf("\nOutput of Matrix AT\n"); // for(i=0;i<size;i++) // { // for(j=0;j<size;j++) printf("%f\t",B(i,j)); // printf("\n"); // } // } time2=MPI_Wtime(); /* ÓÉÖ÷½ø³Ì´òӡʱ¼äÐÅÏ¢ */ if (my_rank==0) { printf("\n"); printf("Whole running time = %f seconds\n",time2-starttime); printf("Distribute data time = %f seconds\n",time1-starttime); printf("Parallel compute time = %f seconds\n",time2-time1); } MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); Environment_Finalize(a,b); return(0); } ``` 增加进程数时间总体是增大的 如图![图片说明](https://img-ask.csdn.net/upload/201704/05/1491395111_19254.png) 请问为什么

用C 语言编程,实现矩阵(3行3列)的转置(即行列互换)

用C语言数组及循环结构编写一个程序,实现矩阵(3行3列)的转置(即行列互换)

1.方的阵转置 (10分) c++

编写一个类用于处理3×3矩阵转置,测试转置的效果,输出转置前后的矩阵。 **函数接口定义:** ``` ``` 根据要求写出类,并可以使得主函数正确运行,得到对应的结果。 ### 裁判测试程序样例: ```c++ /* 请在这里填写答案 */ 在这里给出函数被调用进行测试的例子。例如: int main(){ Matrix m; m.input(); m.show(); m.transform(); m.show(); } ``` **输入样例:** ``` 1 2 3 4 5 6 7 8 9 ``` **输出样例:** 注意每个元素前面有一个空格字符。例如: ``` datas: 1 2 3 4 5 6 7 8 9 datas: 1 4 7 2 5 8 3 6 9 ```

稀疏矩阵的快速转置问题

冒昧的引用下大神的代码: 说明:m为行数,n为列数,t为非零元素的个数 template<class T> void SeqTriple<T>::Transpose(SeqTriple<T>& B) const //将转置后的矩阵赋给B { int *num=new int[n]; //为num和k数组分配空间 int *k=new int [n]; B.m=n; B.n=m; B.t=t; if(t>0) { for(int i=0; i<n; i++) num[i]=0;//初始化num为0 for(int i=0; i<t; i++) num[trip[i].col]++; //计算num k[0]=0; for(int i=1; i<n; i++) k[i]=k[i-1]+num[i-1]; //计算k for(int i=0; i<t; i++) //扫描this对象的三元组表 { int j=k[trip[i].col]++; //求this对象的第i项在新三元组B中的位置j B.trip[j].row=trip[i].col; //将this对象的第i项转置到B的位置j B.trip[j].col=trip[i].row; B.trip[j].value=trip[i].value; } } delete [] num; delete [] k; } 虽然明白num和k数组的作用,但是: 1.num的算法是怎么回事? 即这段代码: for(int i=0; i<t; i++) num[trip[i].col]++; 2.k的计算方法是怎么得到的? 即这段代码: k[i]=k[i-1]+num[i-1] 虽然有代数验证,但是书上没写- - 3.在执行完这两步骤后,接下来的步骤是怎么样的? 即扫描this对象的三元组表那里开始就看不大懂... 求大神指点迷津啊!!! 万分感激!!!

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

linux2.6.1内核源码注释

包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。前后历时三年,算是干货。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

编程实现学生基本信息管理程序

编程实现学生基本信息管理程序。学生基本信息包括:学号、姓名、性别、年龄、班级、学院、专业等。具体实现的管理功能如下: (1) 输入并显示多个学生的基本信息; (2) 可根据需要实现学生信息的添加; (

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

计算机组成原理算法实现

计算机组成原理算法实现,能够实现定点小数的机器数表示、定点小数的变形补码加减运算、定点小数的原码一位乘法运算和浮点数的加减运算。

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

土豆SDK(Java版)-非官方

由于土豆SDK一直建设中,最近几天抽空写了一套java的SDK。包含了现有的所有请求协议。本套SDK中仅提供了oAuth的方式(引用oAuth.net的java版示例),并没有在框架中实现,涉及到登录

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问