[英]Why is my while() statement caught in an infinite loop?
我試圖編寫代碼來顯示任何類型的 sum_number (1,3,6,10,15,21,...),它具有特定數量的部門......
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,c1=1,t=0,c2=1,gn=0;
scanf("%d", &n);
while(t!=n){
t=0;
gn=(c1*(c1+1)/2);
while(c2<=gn){
if(gn%c2==0){
c2+=1;
t+=1;
}
else c2+=1;
}
c1+=1;
c2=1;
}
printf("%d", gn);
return 0;
}
我預計 4 的 output 為 6 或 2 為 3 但沒有輸出!!!
我認為問題在於您的外部測試條件。 我運行了您的代碼,在每個“外循環”和“內循環”之后添加了 printf 語句。 執行結果是這樣(只是發布開始,但模式無限繼續)
Outer while, t = 0, n = 4
Inner while, c2 = 1, gn = 1
Outer while, t = 1, n = 4
Inner while, c2 = 1, gn = 3
Inner while, c2 = 2, gn = 3
Inner while, c2 = 3, gn = 3
Outer while, t = 3, n = 4
Inner while, c2 = 1, gn = 6
Inner while, c2 = 2, gn = 6
Inner while, c2 = 3, gn = 6
Inner while, c2 = 4, gn = 6
Inner while, c2 = 5, gn = 6
Inner while, c2 = 6, gn = 6
Outer while, t = 7, n = 4
Inner while, c2 = 1, gn = 10
Inner while, c2 = 2, gn = 10
Inner while, c2 = 3, gn = 10
Inner while, c2 = 4, gn = 10
Inner while, c2 = 5, gn = 10
Inner while, c2 = 6, gn = 10
Inner while, c2 = 7, gn = 10
Inner while, c2 = 8, gn = 10
Inner while, c2 = 9, gn = 10
Inner while, c2 = 10, gn = 10
Outer while, t = 11, n = 4
您的邏輯導致內部循環繼續進行越來越多的循環 - c 需要越來越長的時間才能接近 gn。 但最重要的是 t 如何遞增——對於 4 的輸入,它會超過 n,因此您不會退出該循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.