我是编程的新手,我正在尝试解决C中的一些问题。我无法理解某些内容,我在互联网上找不到任何解释。我的代码如下(我只是在测试一些东西)
#include <stdio.h>
void sort(int[], int);
int main(void)
{
int myarray[5] = {3, 2, 9, 6, 5};
printf("%d, %d, %d, %d, %d\n", myarray[0], myarray[1], myarray[2], myarray[3], myarray[4]);
sort(myarray, 5);
printf("%d, %d, %d, %d, %d\n", myarray[0], myarray[1], myarray[2], myarray[3], myarray[4]);
}
void sort(int values[], int n)
{
for (int i = 0; i < n; i = i++)
{
if(values[i] > values[i + 1])
{
printf("%d\n", i);
int a = values[i];
int b = values[i + 1];
printf("%d, %d, %d, %d, %d\n", values[0], values[1], values[2], values[3], values[4]);
printf("%d, %d\n", a, b);
values[i] = b;
values[i + 1] = a;
printf("%d, %d, %d, %d, %d\n", values[0], values[1], values[2], values[3], values[4]);
}
}
}
我得到的是:
答案 0 :(得分:1)
在for循环中检查i= i++
。它应该只是i++
。由于i++
为i = i+1
for (int i = 0; i < n; i++)
答案 1 :(得分:0)
条件i=i++
导致无限循环。由于你的循环只包含一个if
语句,在某些更新之后if
条件总是失败,因此输出没有变化,但for
循环仍在无限次运行
答案 2 :(得分:0)
此外,for循环中的条件应为i < n-1
。在给定的程序中,如果i变为4,则values[i + 1] = a
将写入超出范围的values[5]
。