我试图编写代码来显示任何类型的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,但是没有输出!!!
答案 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,因此您不会退出该循环。