c语言格式的函数转换2个数组

因此,我的代码中的函数彼此不通信,我一辈子都无法解决这个问题。你在函数标题的括号里放了什么。变量名在其中,但它们是如何格式化的?我需要指针吗?如果有的话,有人能解释一下吗。谢谢

int FindTranspose(??)

内部主(??)

FindTranspose(??)

#包括<标准h>
int findttranspose(intAt[3][3]之前,intAt[3][3]之后,int i,int j){
int行、列;
printf(“原始矩阵:\n”);
对于(i=0;i<3;i++){
printf(“\n”);
对于(j=0;j<3;j++){
printf(“%d”,At[i][j]之前);
}
}
对于(行=0;行<i;行++){
对于(列=0;列<j;列++){
At[列][行]之后=At[行][列]之前;
}
}
printf(“\n”);
printf(“矩阵的转置:\n”);
printf(“\n”);
对于(行=0;行<j;行++){
对于(列=0;列<i;列++){
printf(“%d”,At[行][列]之后);
}
printf(“\n”);
}
}
int main(){
[3][3]之前的int、[3][3]之后的i、j;
对于(i=0;i<3;i++){
对于(j=0;j<3;j++){
printf(“为数组输入数字-[%d],%d]:”i,j);
scanf(“%d”,At[i][j]之前];
}
}
FindTranspose(At[3][3]之前,[3][3]之后,i,j);
返回0;
}

代码图片

警告图片

在C语言中,将多维数组作为指针处理是非常棘手的

例如,main中定义的[3][3]之前的多维数组
之前的数组名不是"“一如既往”;指向[0][0]之前的指针,虽然它是指向[0]之前的指针,但是之前的实际上具有类型int(*)[3],读作“指向3个元素的一维数组的指针”

无论如何,你应该了解更多关于;指针和多维数组

目前,以下是您的问题的解决方案:

#包括<标准h>
无效FindTranspose(int(*At[3]之前),int(*At[3]之后,int i,int j){
int行、列;
printf(“原始矩阵:\n”);
对于(i=0;i<3;i++){
printf(“\n”);
对于(j=0;j<3;j++){
printf(“%d”,At[i][j]之前);
}
}
对于(行=0;行<i;行++){
对于(列=0;列<j;列++){
At[列][行]之后=At[行][列]之前;
}
}
printf(“\n”);
printf(“矩阵的转置:\n”);
printf(“\n”);
对于(行=0;行<j;行++){
对于(列=0;列<i;列++){
printf(“%d”,At[行][列]之后);
}
printf(“\n”);
}
}
int main(){
[3][3]之前的int、[3][3]之后的i、j;
对于(i=0;i<3;i++){
对于(j=0;j<3;j++){
printf(“为数组输入数字-[%d],%d]:”i,j);
scanf(“%d”,At[i][j]之前];
}
}
FindTranspose(在i、j之前、之后);
返回0;
}

当然,还有一个更容易理解但复杂的解决方案,就是将多维数组作为一维数组处理

以下是一个例子:

#包括<标准h>
#定义第3行的数量
#定义第3列的数量
无效FindTranspose(int*before){
int行、列、i;
[行数][列数]后的int;
int*p,(*q)[NUM_OF_COLS];
printf(“原始矩阵:\n”);
i=0;
for(p=before;p<before+NUM\u OF_COLS*NUM\u OF_ROWS;p++){
printf(“%d”,*p);
如果(++i>=NUM(共列){
i=0;
printf(“\n”);
}
}
列=0;
for(p=before;p<before+NUM\u列*NUM\u行;){
for(q=&after[0];q<&after[NUM_OF_ROWS];q++){
(*q)[列]=*p++;
}
列++;
}
printf(“\n”);
printf(“矩阵的转置:\n”);
对于(行=0;行数<行数;行++){
对于(列=0;列数+列数+){
printf(“%d”,At[行][列]之后);
}
printf(“\n”);
}
}
int main(){
[NUM_OF_ROWS][NUM_OF_COLS]之前的int,i,j;
对于(i=0;i<行数;i++){
对于(j=0;j<NUM\u OF_COLS;j++){
printf(“为数组输入数字-[%d][%d]:”i,j);
scanf(“%d”,At[i][j]之前];
}
}
FindTranspose(&before[0][0]);
返回0;
}

推荐阅读:K.N.King的C编程现代方法第二版

发表评论