【名词解释】
在一行中输入两个整数
![]()
,分别表示矩阵的行数和列数。
接下来
行,每行输入
个整数
![]()
,用空格分隔。
输出
行
列,为矩阵的转置结果。每个元素之后使用一个空格。
2 3 1 2 3 4 5 6
1 4 2 5 3 6
原矩阵为:
其转置矩阵为:
1 4 7 8 9 10
7 8 9 10
原矩阵为 :
其转置矩阵为:
#include<stdio.h> void My_scanf(int arr[10][10],int n, int m) { int i = 0; int j = 0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d ",&arr[i][j]); } } } void Exchange_arr(int arr1[10][10],int arr2[10][10],int n, int m) { int i = 0; int j = 0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { arr2[j][i]=arr1[i][j]; } } } void arr_printf(int arr[10][10],int n, int m) { int i = 0; int j = 0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("%d ",arr[i][j]); } printf("\n"); } } int main() { int n = 0; int m = 0; scanf("%d %d",&n,&m); int arr1[10][10]={0}; int arr2[10][10]={0}; My_scanf(arr1,n,m); Exchange_arr(arr1,arr2,n,m); arr_printf(arr2,n,m); return 0; }
int main() { int n = 0; int m = 0; int i = 0; int j = 0; int arr[10][10]; printf("请输入行和列:"); scanf("%d%d", &n, &m); printf("请输入数据:"); for ( i = 0; i < n; i++) { for ( j = 0; j < m; j++) { scanf("%d",&arr[i][j]); } } printf("输入前:\n"); for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { printf("%d ", arr[i][j]); } printf("\n"); } printf("输入后:\n"); for ( i = 0; i < m; i++) { for ( j = 0; j < n; j++) { printf("%d ", arr[j][i]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int arr[10][10] = { 0 }; int rows = 0; int cols = 0; int i = 0; int j = 0; int tem = 0; //输入矩阵size scanf("%d %d", &rows, &cols); //输入矩阵元素 for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { scanf("%d", &arr[i][j]); } } //输出矩阵 for (j = 0; j < cols; j++) { //列 for (i = 0; i < rows; i++) { //行 printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int n,m; int arr[1000][1000]; int arr1[1000]; int count = 0; scanf("%d %d",&n,&m); for(int i = 0;i<n*m;i++) { scanf("%d",&arr1[i]); } //转置 for(int i = 0;i<n;i++) { for(int j = 0;j<m;j++) { arr[j][i] = arr1[count]; count++; } } //打印 for(int i = 0;i<m;i++) { for(int j = 0;j<n;j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int m,n; scanf("%d %d",&n,&m); int arr[n][m],ar[m][n]; int i; for(i=0;i<n;i++) { int j; for(j=0;j<m;j++) { scanf("%d ",arr[i]+j); ar[j][i] = arr[i][j]; } } for(i=0;i<m;i++) { int j; for(j=0;j<n;j++) { printf("%d ",ar[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int n = 0,m = 0; int arr[11][11] = {0}; scanf("%d%d",&n,&m); for(int i = 0;i<n;i++) { for(int j = 0;j<m;j++) { scanf("%d",&arr[i][j]); } } for(int j = 0;j<m;j++)//列 { for(int i = 0;i<n;i++)//行 { printf("%d ",arr[i][j]);//列不变,行变 } puts(""); } return 0; }
#include <stdio.h> #include <stdlib.h> int main(){ int n, m; scanf("%d%d",&n,&m); //由外而内创建动态数组 int **p = (int *)malloc(n * sizeof(int *)); for(int i = 0; i < n; i++){ p[i] = (int *)malloc(m * sizeof(int)); } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ scanf("%d",&p[i][j]); } } for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ printf("%d ",p[j][i]); } printf("\n"); } //由内而外释放动态数组 for(int i = 0; i < n; i++){ free(p[i]); } free(p); return 0; }
#include<stdio.h> int main() { int n, m, arr[10][10]; scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) scanf("%d", &arr[i][j]); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) printf("%d ", arr[j][i]); printf("\n"); } return 0; }