for语句的难题
题目:马克思曾经做过这样一道趣味数学题:有x个人在一家小饭店里用餐,其中有男人、女人和小孩,每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,共花去y先令。如果要求男人、女人和小孩都有人参与,试编程求有多少种方案分配男人、女人和小孩的人数。其中x,y的值由键盘输入。 #include <iostream>
using namespace std;
int main()
{
int i,a,b,c,x,y,N,count;
cin>>N;
for(i=1;i<=N;i++)
{
cin>>x>>y;
count=0;
*********************************
a=y-2*x+c;
b=3*x-y-2*c;
*********************************
for(c=1;c<x-1;c++)
{
// system("pause");
if(a>=1&&b>=1)
count++;
else continue;
}
cout<<count<<endl;
}
return 0;
}
我将样例输入
2
30 50
20 30
得到的是0 0;
然而我若将 a=y-2*x+c;
b=3*x-y-2*c;放到for循环语句中得到结果是9 4 !!正确!不是说放到for循环语句外是全局变量吗?那么在for语句里应该也能起作用啊!为什么一定要放到for循环语句内才可以得到正确答案呢?难道放到循环for语句外才有a=y-2*x+c; b=3*x-y-2*c;吗?