c语言指针矩阵转置实
时间: 2023-11-05 20:50:17 浏览: 73
c语言指针矩阵转置实现的方法如下:
首先,根据输入的n和n*n的矩阵,创建一个n*n大小的二维数组a,并将输入的矩阵存储到数组a中。然后,定义一个指针pa指向数组a的首元素。
接下来,使用两个循环嵌套遍历数组a,交换每对对称位置的元素。具体的交换方式是,将指针*(pa + i*n + j)和*(pa + j*n + i)指向的元素进行交换。这样,经过循环遍历和交换操作后,数组a中的元素就完成了转置。
最后,再次使用两个循环嵌套遍历数组a,将转置后的矩阵输出。
以下是具体的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 0;
int i = 0;
int j = 0;
scanf("%d", &n);
int a[n][n];
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
int *pa = &a
相关问题
矩阵转置c语言pta指针
以下是使用指针实现矩阵转置的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语言用指针
以下是使用指针实现矩阵转置的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`函数来转置矩阵,并输出转置后的矩阵。