C ++,for,Infinite loop

时间:2015-06-20 19:03:42

标签: c++

我的程序应该得到最小的“g”和“c”,其中5 * c-3 * g = p

例如p=48

5*12-3*4=48
(c=12, g=4)

我陷入无限循环。

我还有其他两种方式,但我想这样做。

 #include <iostream.h>
int main()
{int s, c, g, p, a;
cin>>p;
a=0; s=0;
for (g=0; a==0; g++)
 for (c=0; p>s; c++)
  {s=5*c-3*g;  if (s==p) a=1;}

    cout<<c-1<<endl;
    cout<<g-1<<endl;
return 0;}

1 个答案:

答案 0 :(得分:0)

主要问题是,您正在更改内循环中s的值,但是当内循环终止时,您不会将s重置为0。因此,s == p永远不会成为true

试试这个:

for (g = 0; a == 0; g++) {
    for (c = 0; p > s; c++) {
        s = 5 * c - 3 * g;
        if (s == p)
            a = 1;
    }
    s = 0; // reset s for next checking
}

输入,

  

p = 12

输出可能是:

  

12

     

4