如何摆脱c中的无限循环

时间:2017-05-24 15:22:27

标签: c

我试图对一个字符串进行冒泡,并且它正在工作,但我无法想出退出这个无限循环的方法。 请帮忙!

do {
    for (k = i; angrm1[k + 1] != ' '&&angrm1[k + 1] != 0; k++) {
        if (angrm1[i] > angrm1[i + 1]) {
            temp = angrm1[k];
            angrm1[k] = angrm1[k + 1];
            angrm1[k + 1] = temp;
            flag = 1;
        }i++;
    }
    if (angrm1[i+1] == ' ')
        i = i + 2;
    if (angrm1[i+1] == '\0')
        i = 0;
} while (flag != 0);

1 个答案:

答案 0 :(得分:0)

无限循环是由于没有条件来设置flag = 0

这是一个更清洁的版本,取决于i而不是ik。我会留下空间供你实施。

do {
  //Set flag to zero
  flag = 0;
  for(i = 0; angrm1[i] != '\0'; i++){
    if(angrm1[i+1] == '\0'){
       //If end of string, exit the loop by breaking
       break;
    }
    if(angrm1[i] > angrm1[i+1]){
          temp = angrm1[i];
          angrm1[i] = angrm1[i+1]; 
          angrm1[i+1] = temp;
          flag = 1;
       }
    }
    i = 0;
} while (flag != 0);