矩阵转置c语言pta指针
时间: 2023-12-05 20:40:00 浏览: 49
以下是使用指针实现矩阵转置的C语言代码:
```c
#include <stdio.h>
#define N 10
int main() {
int n, i, j;
int a[N][N] = {0}, b[N][N];
int(*pa)[N], (*pb)[N];
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
pa = &a[0];
pb = &b[0];
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
*(*(pb + i) + j) = *(*(pa + j) + i); printf("%4d", b[i][j]);
}
printf("\n");
}
return 0;
}
```
该程序使用了指针来实现矩阵转置,首先定义了两个二维数组a和b,其中a存储原始矩阵,b存储转置后的矩阵。然后定义了两个指向二维数组的指针pa和pb,分别指向a和b的第一行。接着使用两个for循环遍历a数组,将a中的元素赋值给b中对应的元素,并输出转置后的矩阵。
相关问题
矩阵转置c语言pta
以下是矩阵转置的C语言代码示例:
```c
#include <stdio.h>
#define ROW 3
#define COL 3
int main()
{
int matrix[ROW][COL] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int i, j;
printf("Original matrix:\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%4d", matrix[i][j]);
}
printf("\n");
}
printf("Transposed matrix:\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%4d", matrix[j][i]);
}
printf("\n");
}
return 0;
}
```
输出结果为:
```
Original matrix:
1 2 3
4 5 6
7 8 9
Transposed matrix:
1 4 7
2 5 8
3 6 9
```
矩阵转置c语言用指针
以下是使用指针实现矩阵转置的C语言代码:
```c
#include <stdio.h>
void transpose(int (*matrix)[100], int n);
int main() {
int n, matrix[100][100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
transpose(matrix, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
void transpose(int (*matrix)[100], int n) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
```
该代码中,我们定义了一个`transpose`函数,该函数接受一个指向二维数组的指针和矩阵的大小`n`作为参数。在函数中,我们使用两个嵌套的循环来遍历矩阵,将矩阵的第`i`行和第`j`列的元素与第`j`行和第`i`列的元素交换。最后,在主函数中,我们调用`transpose`函数来转置矩阵,并输出转置后的矩阵。