我找不到为什么我的循环不起作用

时间:2014-03-11 05:51:02

标签: c sorting for-loop

我是编程的新手,我正在尝试解决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]);
        }
     }
}

我得到的是:

  • 3,2,9,6,5
  • 0
  • 3,2,9,6,5
  • 3,2
  • 2,3,9,6,5
  • 2 //(不应该是1 ?????)
  • 2,3,9,6,5
  • 9,6
  • 2,3,6,9,5
  • 3
  • 2,3,6,9,5
  • 9,5
  • 2,3,6,5,9
  • 4
  • 2,3,6,5,9
  • 9,-1076375724
  • 2,3,6,5,-1076375724
  • 2,3,6,5,-1076375724

3 个答案:

答案 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]