【发布时间】:2019-03-11 21:54:42
【问题描述】:
为什么代码没有打印任何东西?这段代码应该做的是以这种方式对二维数组进行排序: 二维数组表示一个 {x,y},然后代码需要对其进行排序,包含 x =0 的行需要排在下一个。 这里的交换功能是在两行之间交换。现在,当我尝试打印排序后的数组时,输出中什么也没有得到
#include <stdio.h>
void swap(int p1[], int p2[]);
int arrange(int p[][2], int n);
void swap(int p1[], int p2[]){
for(int i=0; i<2; i++){
int temp=p1[i];
p1[i]=p2[i];
p2[i]=temp;
}
}
int arrange(int p[][2], int n){
int idx=0;
for(int i=0; i<n; i++){
if(p[i][0] >= 0 && (i+1)<n)
if(p[i+1][0] <0) {
swap(&p[i][0],&p[i+1][0]);
idx++;
}
else if(p[i][0]<0)
idx++;
}
return 1;
}
int main()
{
int a[4][2]={{1,2},{6,7},{-10,5},{0,1}};
arrange(a[4][2], 4);
for(int i=0; i<4; i++){
printf("{%d, %d}, ", a[i][0], a[i][1] );
}
}
【问题讨论】:
-
arrange(a[4][2], 4);应该是arrange(a, 4); -
是的,认真对待编译器的警告。
标签: c arrays function pointers multidimensional-array