写一个n×n(n<10)矩阵的转置程序,输出其原矩阵的值和转置以后的结果。
(注:不输入数组元素,用a[i][j] = n* i + j + 1求得)
**输入提示:"please input n:"
**输入格式要求:"%d"
**输出提示信息:"转置前:\n"
**输出格式要求:"%-4d" (每行末要有回车)
**输出提示信息:"转置后:\n"
**输出格式要求:"%-4d" (每行末要有回车)
程序运行结果如下:
please input n: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
#include <stdio.h>
#define N 10
int main()
{
int i,j,m,a[N][N],k;
printf("please input n:");
scanf("%d",&m);
for(i=0;i<m;i++)
for(j=0;j<m;j++)
a[i][j] = m*i + j + 1;
printf("转置前:\n");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
printf("转置后:\n");
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
k = a[i][j];
a[i][j] = a[j][i];
a[j][i] = k;
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf("%-4d",a[j][i]);
printf("\n");
}
}