我试图对一个字符串进行冒泡,并且它正在工作,但我无法想出退出这个无限循环的方法。 请帮忙!
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);
答案 0 :(得分:0)
无限循环是由于没有条件来设置flag = 0
。
这是一个更清洁的版本,取决于i
而不是i
和k
。我会留下空间供你实施。
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);