簡體   English   中英

為什么我的 while() 語句陷入無限循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM