将三乘三的矩阵转置用指针数组
时间: 2024-06-14 17:03:20 浏览: 77
以下是将三乘三的矩阵转置用指针数组的示例代码:
```c
#include <stdio.h>
int main() {
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int *p[3];
int i, j;
for (i = 0; i < 3; i++) {
p[i] = a[i];
}
for (i = 0; i < 3; i++) {
for (j = i; j < 3; j++) {
int temp = *(p[i] + j);
*(p[i] + j) = *(p[j] + i);
*(p[j] + i) = temp;
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
putchar('\n');
}
return 0;
}
```
输出结果为:
```
1 4 7
2 5 8
3 6 9
```
相关问题
使用动态内存分配生成动态数组来编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。使用指针实现函数的功能。
在C++或其他支持动态内存分配的语言中,你可以使用`new`运算符来创建动态数组。首先,我们需要定义一个结构体或类来表示矩阵元素,并为转置函数编写一个模板函数,因为它可以处理任意大小的矩阵。以下是使用指针实现3x3矩阵转置的一个示例:
```cpp
#include <iostream>
// 定义矩阵元素的结构体
struct MatrixElement {
int data;
};
// 动态数组模板函数,用于转置矩阵
template<int N>
void transpose(int** matrix, int** transposed) {
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
transposed[j][i] = matrix[i][j];
}
}
}
// 动态分配和释放3x3矩阵
int** createMatrix(int size) {
int** matrix = new int*[size];
for (int i = 0; i < size; ++i) {
matrix[i] = new int[size];
}
return matrix;
}
void destroyMatrix(int** matrix, int size) {
for (int i = 0; i < size; ++i) {
delete[] matrix[i];
}
delete[] matrix;
}
// 测试函数
int main() {
int size = 3;
int** original = createMatrix(size);
// 初始化原始矩阵
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
original[i][j] = i * size + j;
}
}
int** transposed = createMatrix(size); // 创建转置后的矩阵
transpose<size>(original, transposed); // 转置操作
// 打印原矩阵和转置后的矩阵
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
std::cout << original[i][j] << " ";
}
std::cout << "\n";
}
std::cout << "Transposed:\n";
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
std::cout << transposed[i][j] << " ";
}
std::cout << "\n";
}
destroyMatrix(original, size);
destroyMatrix(transposed, size);
return 0;
}
编辑函数将5乘5的矩阵转置 用指针
可以用下面的代码实现:
```c
void transpose(int (*matrix)[5]) {
int i, j;
for (i = 0; i < 5; i++) {
for (j = i + 1; j < 5; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
```
其中,`matrix`是一个指向整型数组的指针,指向一个5行5列的矩阵。函数中的两个循环依次遍历矩阵中的每个元素,将其与其对称位置的元素交换。这样就实现了矩阵的转置。
阅读全文