先放代码.
#include "stdio.h"
#define N 10
void Transpose(int (*a)[N], int n);
void Swap(int *x, int *y);
void InputMatrix(int (*a)[N], int n);
void PrintMatrix(int (*a)[N], int n);
int main()
{
int n = 0;
printf("input the n:\n");
scanf("%d",&n);
int arr[N][N];
printf("input the martrix:\n");
InputMatrix(arr, n);
printf("The transposed matrix is:\n");
Transpose(arr,n);
PrintMatrix(arr,n);
return 0;
}
void InputMatrix(int (*a)[N], int n)
{
for (int i = 0;i < n;i ++)
{
for (int j = 0;j < n;j ++)
{
scanf("%d",&a[i][j]);
}
}
}
void Transpose(int (*a)[N], int n)
{
for (int i = 0;i < n;i ++)
{
for (int j = 1 + i;j < n;j ++)
{
Swap(&a[i][j],&a[j][i]);
}
}
}
void Swap(int *x, int *y)
{
int trans = 0;
trans = *x;
*x = *y;
*y = trans;
}
void PrintMatrix(int (*a)[N], int n)
{
for (int i = 0;i < n;i ++)
{
for (int j = 0;j < n;j ++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
}
在这个函数中,我们使用了输入函数、输出函数、转置函数、转换函数,以及数组指针这几个知识点.
- 数组指针
数组指针是C语言中的一个概念,它指的是一个 指向数组 的指针。换句话说,它存储了一个数组在内存中的地址。与int型单变量指针一样,它的作用是将数组传递到函数当中,并且也需要对其进行初始化、传地址、解引用等操作.
声明方式:
int (*ptr)[N];
在函数中的使用:
//主函数
char arr[3][4];
//函数
void proccessarray(int (*pst)[N],int n)
{
//此时的arr已经被传递过来了,对pst进行操作也是对arr进行操作.
}