展开全部
这个用for比较好吧,对于用while,你在脑中按步骤模拟一下执行,就会发现
第一层循环32313133353236313431303231363533e58685e5aeb931333332626634时,b=1,m=1,s从2到200退出s循环。
当m=2,m循环第二轮时,s的值还是200!同理当b=2,b循环第二轮时,m的值还是50不变。
修改:在循环尾部重新初始化上层循环变量的值。详见注释。
----------------------------------------------------------------------------------#include
int main()
{
int b=1,m=1,s=2,i=0;
while(b<=33)
{
while(m<50)
{
while(s<100) //1、为提高效率,s的范围<100即可
{
if(b+m+s==100&&3*b+2*m+s/2==100)
{
cout<
i++;
}
s=s+2;
}
s=2; //3、在m每次循环里,初始s的值为2
m++;
}
m=1; //4、在b每次循环里,初始m的值为1
b++;
}
cout<
return 0;
}