c 编写程序,将一个NxN的方阵A转置后输出。要求使用二维数组的行指针实现
时间: 2024-02-28 09:57:00 浏览: 21
好的,以下是实现代码:
```c
#include <stdio.h>
void transpose(int (*A)[], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
int temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}
int main() {
int n;
printf("请输入方阵的大小:");
scanf("%d", &n);
int A[n][n];
printf("请输入方阵的元素:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &A[i][j]);
}
}
transpose(A, n);
printf("转置后的方阵为:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", A[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个程序中,我们定义了一个 `transpose` 函数,用于将方阵转置。该函数使用了二维数组的行指针实现,因为我们将数组名作为参数传递给函数时,实际上传递的是一个指向第一行的指针,通过这个指针我们可以访问整个数组。
在主函数中,我们首先获取用户输入的方阵大小,并根据大小定义一个二维数组 `A`。然后我们使用嵌套的循环,逐个输入数组元素。接下来调用 `transpose` 函数,将方阵转置。最后再次使用嵌套循环,逐个输出转置后的方阵元素,完成程序的运行。