For循环未打印阵列
问题描述:
我已成功对values
进行了排序,但试图在最后使用for-loop或printf打印它们时,程序不执行任何操作。For循环未打印阵列
int main(void){
int values[] = {23,19,1};
int size = 3;
int counter = 0;
int i;
int holder;
for(i = 0; i < size; i++){
counter = 0;
if(values[i] > values[i + 1]){
holder = values[i];
values[i] = values[i + 1];
values[i + 1] = holder;
counter = 1;
printf("index: %i = %i, index: %i = %i\n", i, values[i], i + 1, values[i + 1]);
printf("Sorting..\n");
}
if((i + 2) == size){
if(counter == 0){
printf("The array is sorted! %i, %i, %i\n", values[0], values[1], values[2]);
return true;
break;
}
else {
i = -1;
}
}
}
printf("%i\n", values[0]);
for(i = 0; i < size; i++){
printf("%i\n", values[i]);
}
return 0;
}
的程序输出是:
index: 0 = 19, index: 1 = 23
Sorting..
index: 1 = 1, index: 2 = 23
Sorting..
index: 0 = 1, index: 1 = 19
Sorting..
The array is sorted! 1, 19, 23
答
你return true
数组排序后飞出main
功能,所以从来没有达到底部的打印码。
'printf(“数组排序!...);返回true;'那就行了 – kaylum
删除'return true;'。 – chux
在你的第一个for循环中保留break;返回true'。 – Nikita