为什么我的while()语句陷入无限循环?

时间:2019-10-27 11:45:51

标签: c

我试图编写代码来显示任何类型的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的输出为6或2为3,但是没有输出!!!

1 个答案:

答案 0 :(得分:0)

我认为问题出在测试条件外。我运行了您的代码,每隔一段时间为“外循环”和“内循环”添加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花费的时间越来越长。但是showtopper是t递增的方式-输入4时,它会跳过n,因此您不会退出该循环。

相关问题