题目描述
写一个n×n(n<10)矩阵的转置程序,输出其原矩阵的值和转置以后的结果。
(注:不输入数组元素,用
a
[
i
]
[
j
]
=
n
∗
i
+
j
+
1
a[i][j] = n* i + j + 1
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
一、解题思路
水题,按照数学定义逐个元素操作即可
二、题解
源代码
代码如下:
/*
* Author: FeverTwice
* Date: 2021-06-02
* Func: Solution for Competition
*/
#include <stdio.h>
#define ROW 10
#define COLUMN 10
int main()
{
int a[ROW][COLUMN];
int i, j, k,n;
printf("please input n:");
scanf("%d",&n);
for (i = 0; i < n ; i++)
for (j = 0; j < n ; j++ )
a[i][j] = n * i + j + 1; /*对矩阵赋值*/
printf("转置前:\n");
for (i = 0; i < n ; i++)
{
for (j = 0; j < n ; j++ )
printf("%-4d", a[i][j]); /*输出转置前的矩阵*/
printf("\n");
}
for (i = 0; i < n ; i++)
{
for (j = 0; j < i ; j++ )
{
k = a[i][j];
a[i][j] = a[j][i];
a[j][i] = k;
}
}
printf("转置后:\n");
for (i = 0; i < n ; i++ )
{
for (j = 0; j < n ; j++ )
printf("%-4d", a[i][j]); /*输出后转置后的矩阵*/
printf("\n");
}
}
写在最后
各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! <(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知