gpt4 book ai didi

c - 为什么我的代码不打印排序数组?

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:10 25 4
gpt4 key购买 nike

为什么代码没有打印任何东西?这段代码应该做的是以这种方式对二维数组进行排序:二维数组表示 {x,y},然后代码需要对其进行排序,包含 x < 0 的行需要排在第一位,而 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] );
}

}

最佳答案

Why the code isn't printing anything?

因为它不能编译,因为你的编译器应该给出错误和警告。

为了修复错误,改变这个:

arrange(a[4][2], 4);

对此:

arrange(a, 4);

附录:

这是传递给它的带有 Wall 标志的 GCC 警告:

prog.cc: In function 'int arrange(int (*)[2], int)':
prog.cc:17:7: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
17 | if(p[i][0] >= 0 && (i+1)<n)
|

为了修复该警告,我将您的代码更改为:

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++;
}

关于c - 为什么我的代码不打印排序数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52681740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com