我正在尝试编写2个使用指针迭代am * n矩阵的函数,以便逐个元素地交换行和列。当涉及到另一个时,交换行的函数已经很好了,我可以'似乎想通了。当我尝试交换第3列和第2列时,输出为矩阵
1 2 3
1 2 3
1 2 3
是:
1 3 2
1 3 2
1 2 3
任何建议都会非常感激。这是两个代码:
void interchange_rows(int *p,int n,int r1,int r2){
int temp;
for(int i=0;i<n;i++){
temp=*(p+r1*n+i);
*(p+r1*n+i)=*(p+r2*n+i);
*(p+r2*n+i)=temp;
}
}
void interchange_columns(int *p,int n, int c1,int c2){
int temp;
for(int i=0;i<n;i++){
temp=*(p+(i*n)-c1);
*(p+(i*n)-c1)=*(p+(i*n)-c2);
*(p+(i*n)-c2)=temp;
}
}
答案 0 :(得分:0)
你应该加上c1和c2而不是减去。
void interchange_columns(int *p,int n, int c1,int c2){
int temp;
for(int i=0;i<n;i++){
temp=*(p+(i*n)+c1);
*(p+(i*n)+c1)=*(p+(i*n)+c2);
*(p+(i*n)+c2)=temp;
}
}