完成下面c语言程序:矩阵转置 某二维数组存放的数据构成一个n*n的方阵,其中n<=5。写程序,从键盘输入n的值(n<=6),该n*n矩阵中各元素的值按下面的公式计算: a[i][j] = i * n + j + 1 其中,a[i][j]表示第i行第j列的元素。要求分别输出该矩阵和它的转置矩阵。 输入提示信息:无 输入n的输入格式:%d 输出提示:"The original matrix is:\n" 输出提示:"The changed matrix is:\n" 输出格式:对矩阵的输出要求:列与列之间为%3d,行与行之间为\n 输入样例1: 5↙ 输出样例1: The_original_matrix_is: __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 The_changed_matrix_is: __1__6_11_16_21 __2__7_12_17_22 __3__8_13_18_23 __4__9_14_18_24 __5_10_15_20_25 (输出样例中下划线“_”代表空格) 输入样例2: 4↙ 输出样例2: The original matrix is: __1__2__3__4 __5__6__7__8 __9_10_11_12 _13_14_15_16 The changed matrix is: __1__5__9_13 __2__6_10_14 __3__7_11_15 __4__8_12_16 (输出样例中下划线“_”代表空格)
时间: 2023-08-05 09:09:53 浏览: 121
以下是该程序的C语言实现:
```c
#include <stdio.h>
int main() {
int n, a[6][6], b[6][6];
scanf("%d", &n);
// 构造矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = i * n + j + 1;
}
}
// 输出原始矩阵
printf("The original matrix is:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%3d", a[i][j]);
}
printf("\n");
}
// 矩阵转置
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
b[j][i] = a[i][j];
}
}
// 输出转置矩阵
printf("The changed matrix is:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%3d", b[i][j]);
}
printf("\n");
}
return 0;
}
```
程序的实现步骤:
1.从键盘输入矩阵的维数n;
2.根据公式a[i][j]=i * n + j + 1,构造矩阵a;
3.输出矩阵a;
4.矩阵转置,得到矩阵b;
5.输出矩阵b。
注意事项:
1.数组下标从0开始,因此矩阵元素的计算公式为i * n + j + 1;
2.在输出矩阵时,每个元素占用3个字符的宽度,不足3个字符的在前面补空格。
输出的下划线“_”代表空格。
阅读全文