编写一个n*n矩阵转置的函数。参数为整形指针,使用指针对数组元素进行操作,在main()中使用new操作符分配内存,实现动态数组;n在程序中由用户输入,矩阵数据由用户输入。
时间: 2023-02-05 21:32:04 浏览: 162
矩阵转置的过程就是将矩阵的行和列对调,比如原来的矩阵是这样的:
1 2 3
4 5 6
7 8 9
转置后就变成了这样:
1 4 7
2 5 8
3 6 9
下面是使用指针实现矩阵转置的代码示例:
```
#include <iostream>
using namespace std;
void transpose(int* arr, int n) {
// 循环遍历每个位置
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// 交换当前位置和对角线位置上的数
int temp = arr[i * n + j];
arr[i * n + j] = arr[j * n + i];
arr[j * n + i] = temp;
}
}
}
int main() {
// 读入矩阵的尺寸
int n;
cout << "请输入矩阵的尺寸: ";
cin >> n;
// 使用new操作符分配内存
int* arr = new int[n * n];
// 读入矩阵数据
cout << "请输入矩阵数据: ";
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i * n + j];
}
}
// 调用转置函数
transpose(arr, n);
// 输出转置后的矩阵
cout << "转置后的矩阵: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << arr[i * n + j] << " ";
}
cout << endl;
}
// 使用完毕后别忘了使用delete释放内存
delete[] arr;
return 0;
}
```
阅读全文