gpt4 book ai didi

c - 函数中的数组成员比较不起作用

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

首先,我什至不确定你是否称它为成员(member),想不出更好的词。

我正在尝试学习调试和数组的基础知识 - 所以我想从内存中创建类似于插入排序的东西(这样会犯错误),然后调试程序。

void findingsmaller (int *array, int num_inputs){
int a = 0;
int b = 1;

for ( b=1; b == num_inputs-1; b++ ) {
if ( array[a] > array[b] ) {
goleft(array, a, b);
a++;
}
}
}

假设我们在数组中有这个:6 5 3 1 8 7 2 4 . array[a] 应该是 6 array[b] 应该是 5 . 6 > 5所以我们应该输入函数来查找数组左侧第一个较小的数字。

从我的调试 session 来看,条件似乎是 FALSE所以我不输入 goleft根本。更具体地说,Step into忽略它,测试 printf 也没有执行。我假设数组比较没有正确编写,更正是什么?

WHOLE CODE如果有人想查看其他可能的错误。

提前致谢!

编辑:<= num_inputs是正确的,不知何故我认为for(range1, range2, change)而不是 (start, condition, change) .无论如何,现在问题似乎是我的goleft函数执行其 do-while循环一次太多了,尽管它不应该超过那个条件。

EDIT2:修复了其他几个错误。

  1. 我在 main 中打印现在是for( ; i <= num_inputs-1; )

  2. 我的 goleft由于条件会进行太多迭代,固定为 ... while ( a >= 0 && array[a] > array[b] )

  3. 我的 findingsmaller只会在下一个数字较小时运行,但在数字较大时不执行任何操作。例如 6 8该程序将无法正常运行。已添加 else {a++}

我的固定 code对于任何对更改比较感兴趣的人。

最佳答案

只要条件为真,for循环就会执行。

for ( ;Condition; )
{
// body
}

在您的 for 循环中,如果输入大于 1,则条件始终为 False。

关于c - 函数中的数组成员比较不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099098/

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