7-2 矩阵转置 (12 分)
输入一个mXm的整数矩阵,进行转置后输出。2<n <20
输入格式:
第1行输入矩阵的行数。 其后的 m 行 每行输入m个整数,数据之间用空格分隔。
输出格式:
输出转置后的矩阵。数据之间用空格分隔,最后 一个数据后没有空格。
输入样例:
在这里给出一组输入。例如:
5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
结尾无空行
输出样例:
在这里给出相应的输出。例如:
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
作者
lsr
单位
枣庄学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C (gcc)
1
#include<stdio.h>
2
int main()
3
{
4
int n,i,j;
5
scanf("%d",&n);
6
int a[n][n];
7
for(i=0;i<n;i++)
8
{
9
for(j=0;j<n;j++)
10
{
11
scanf("%d",&a[i][j]);
12
}
13
}
14
for(i=0;i<n;i++)
15
{
16
for(j=0;j<n;j++)
17
{
18
printf("%d ",a[j][i]);
19
}
20
printf("\n");
21
}
22
return 0;
23
}
#include
#define SIZE 20 //预定义要进行转置的矩阵最大大小为 20*20
//为了函数参数传递的方便,将行和列的具体大小定义为全局变量
int column; //行
int row ;//列
//矩阵的输入函数
void inputMatrix(int a[][SIZE] , int n, int m){ //二维数组参数下标必须要确定
int i,j;
for(i = 0;i < n;i++){
for(j = 0;j < m;j++){
scanf("%d",&a[i][j]);
}
}
}
//矩阵的输出函数
void outputMatrix(int b[][SIZE] , int n, int m){
int i,j;
for(i = 0;i < n;i++){
for(j = 0;j < m;j++){
printf("%d ",b[i][j]);
}
printf("\n"); //每次打印完一行后进行换行
}
}
//矩阵的转置运算
void matrixTransport(int a[][SIZE], int b[][SIZE]){
int i,j;
for(i = 0;i < row;i++){
for(j = 0; j < column ; j++){
b[i][j] = a[j][i];
}
}
}
int main()
{
//定义数组并初始化
int a[SIZE][SIZE]={0};
int b[SIZE][SIZE]={0};//定义数组,注意要初始化
//矩阵行,列数的确定
printf("请输入您要进行转置的矩阵的行数 : column = ");
scanf("%d",&column);
printf("\n请输入您要进行转置的矩阵的列数 : row = ");
scanf("%d",&row);
//函数调用及主功能实现
printf("请输入一个 %d X %d 的矩阵 \n" , column , row);
inputMatrix(a, column , row);
matrixTransport(a,b);
printf("转置后的矩阵是 :\n");
outputMatrix(b, row , column);
getchar();
return 0;
}
定义数组的时候不能用n,按照题目应该是a[20][20];