我不明白为什么这段代码在tot
等于或小于10时会打破循环,而当它超过10时则不会打断循环。
我不能相信我仍然无法管理这个基本的东西..请帮帮我!
do {
tot = 0;
system("CLS");
printf("Inserisci 10 sfere tra rosse, blu e verdi");
printf("\n\n Rosse : ");
scanf(" %d" , &rosse);
tot += rosse;
for (i = 0; i < rosse; i++) {
sfere[i] = 1;
}
printf("\n Verdi : ");
scanf(" %d", &verdi);
tot += verdi;
for (i = 0; i < verdi; i++) {
sfere[i+rosse] = 2;
}
printf("\n Blu : ");
scanf(" %d", &blu);
tot += blu;
for (i = 0; i < blu; i++) {
sfere[i+rosse+verdi] = 3;
}
if (tot == 10) {
break;
}
} while (true);
我尝试过这样做,但我得到了同样的结果..
while (tot != 10);
我强调我正在使用scanf
和printf
因为我的大学课程希望,让我们更好地了解记忆的运作方式,并确保将来不会出现错误。
答案 0 :(得分:1)
您提供的代码只会在tot等于10
时中断while循环if (tot == 10) {
break;
}
第二个片段(下面的一个片段)的行为会相同但是这种方法更好,因为你明确写出循环时应该在tot等于10时结束(然后条件tot != 10
将变为false,这将停止循环):
while (tot != 10);
答案 1 :(得分:1)
您 tot
变量正在获取任意数字。这可能会更好:
if(tot >= 10){
break
}
除非您认为 tot
的具体原因始终为10.否则,如果 tot
<,您将获得无限循环/ strong>最终不是10。
另一种方法是利用do {} while()循环:
do{
//code
}while(tot >= 10)
答案 2 :(得分:0)
更改此
// ...
if (tot == 10) {
break;
}
} while (true);
到这个
// ...
} while (tot < 10);
因为总数可能无法准确命中10
,并且因为逻辑更清晰,更甜 - 请注意我如何使用所需条件来结束循环。
答案 3 :(得分:0)
我解决了!我不知道为什么我的循环永远不会因为循环外的一些代码而结束。
当我用srand(time(NULL))
更改srand(time(&t))
时,它就开始工作了!
(之前声明time_t t;
。