c 编写程序,键盘输入一个 N. 将一个NxN的方阵A转置后输出。要求使用二维数组的行指针实现
时间: 2024-02-28 19:56:54 浏览: 25
下面是一个键盘输入N,然后将NxN的方阵A转置后输出的C程序,使用二维数组的行指针实现:
```c
#include <stdio.h>
#include <stdlib.h>
void transpose(int (*a)[], int n); // 声明转置函数
int main()
{
int n;
printf("请输入方阵的大小N:");
scanf("%d", &n);
int (*a)[n] = malloc(sizeof(int[n][n])); // 动态申请二维数组空间
printf("请输入%d个整数作为方阵元素:\n", n * n);
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
printf("原始矩阵:\n");
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
printf("%d\t", a[i][j]);
}
printf("\n");
}
transpose(a, n); // 调用转置函数
printf("转置后的矩阵:\n");
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
printf("%d\t", a[i][j]);
}
printf("\n");
}
free(a); // 释放动态申请的空间
return 0;
}
void transpose(int (*a)[], int n)
{
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
}
```
在上面的程序中,我们首先通过键盘输入获取方阵的大小N,并动态申请了一个NxN的方阵a的空间。然后我们通过键盘输入获取方阵的元素,并将其输出到屏幕上。接着我们调用了一个名为transpose的函数,该函数使用行指针将方阵a进行转置。最后我们再次输出转置后的矩阵,并释放动态申请的空间。