使用二维数组概念将矩阵进行转置(即原矩阵的行变为新矩阵的列):
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
下面是 C 语言和 C++ 两种语言实现矩阵转置的示例代码:
C 语言:
#include <stdio.h>
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 原矩阵
int transposed[3][3]; // 转置后的矩阵
// 计算转置后的矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
transposed[j][i] = matrix[i][j]; // 将原矩阵的行变为新矩阵的列
}
}
// 打印原矩阵
printf("原矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 打印转置后的矩阵
printf("转置后的矩阵:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
return 0;
}
C++:
#include <iostream>
using namespace std;
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 原矩阵
int transposed[3][3]; // 转置后的矩阵
// 计算转置后的矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
transposed[j][i] = matrix[i][j]; // 将原矩阵的行变为新矩阵的列
}
}
// 打印原矩阵
cout << "原矩阵:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// 打印转置后的矩阵
cout << "转置后的矩阵:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << transposed[i][j] << " ";
}
cout << endl;
}
return 0;
}
以上两份代码中,都定义了一个 3x3 的矩阵和一个对应的 3x3 的转置后的矩阵。然后,使用两个嵌套的 for 循环遍历原矩阵,将原矩阵的行变为新矩阵的列,计算出转置后的矩阵。最后,分别打印原矩阵和转置后的矩阵。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
代码如下,供参考:
#include <stdio.h>
#define N 10
int main()
{
int a[N][N];
int i,j,t,n;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)//转置 行列互换
{
for(j=i;j<n;j++)
{
t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
for(i=0;i<n;i++){ //输出转置后的数组
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}