首先做这个函数 必须得理解数组指针 也就是指向数组的指针
【myfunc.c】
//矩阵转置 matrix transpose numxnum矩阵
void G_matrix_transnum(int (*p)[G_matrix_num]){
int i = 0,j = 0;
int tmp = 0;
for(i = 0;i < G_matrix_num;i++){
for(j = 0;j < G_matrix_num;j++){
if(j > i){
tmp = *(*(p + i) + j);
*(*(p + i) + j) = *(*(p + j) + i);
*(*(p + j) + i) = tmp;
}
}
}
}
【myfunc.h】
int G_matrix_num;
//矩阵转置 matrix transpose numxnum矩阵 3x3 void G_matrix_transnum(int (*)[G_matrix_num]);
//当然除了定义函数外,还需要定义一个变量,用来声明函数里的变量,控制行数列数可变
【mytest.c】
there is test function.
#include
#include"myfunc.h"
int main(void){
//numxnum转置矩阵测试 successful
printf("请输入矩阵的行数或者是列数:\n");
scanf("%d",&G_matrix_num);
int a[G_matrix_num][G_matrix_num];
int (*p)[G_matrix_num];
int i = 0,j = 0;
p = a;
printf("请输入矩阵:\n");
for(i = 0;i < G_matrix_num;i++){
for(j = 0;j < G_matrix_num;j++){
scanf("%d",(*(p + i) + j));
}
}
printf("转置前:\n");
for(i = 0;i < G_matrix_num;i++){
for(j = 0;j
printf("%d ",*(*(p + i) + j));
}
printf("\n");
}
G_matrix_transnum(p);
printf("转置后:\n");
for(i = 0;i < G_matrix_num;i++){
for(j = 0;j < G_matrix_num;j++){
printf("%d ",*(*(p + i) + j));
}
printf("\n");
}
printf("\n");
return 0;
}
return result:
tarena@ubuntu:~/myfunc$ gcc myfunc.c mytest.c -lm
tarena@ubuntu:~/myfunc$ ./a.out
请输入矩阵的行数或者是列数:
3
请输入矩阵:
1 2 3 4 5 6 7 8 9
转置前:
1 2 3
4 5 6
7 8 9
转置后:
1 4 7
2 5 8
3 6 9