注册 登录
编程论坛 C++教室

for语句的难题

我有我梦 发布于 2013-06-05 21:23, 902 次点击
题目:马克思曾经做过这样一道趣味数学题:有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;吗?
11 回复
#2
lzj125302013-06-05 22:24
c的值没有初始化
#3
lzj125302013-06-05 22:26
你的C值,只在内存for循环 初始化了,所以外面值是不确定的
#4
我有我梦2013-06-05 22:56
谢谢你了2楼主!!那我应该在那个地方对c初始化!!
#5
我有我梦2013-06-05 23:03
不过还有就是我将     a=y-2*x+c; b=3*x-y-2*c;放入for循环中也是没有对c初始化的啊!也只是在for循环中初始化了
#6
iloveyoub2013-06-06 01:31
领教了!
#7
lzj125302013-06-06 07:59
for(c=1;c<x-1;c++)这一个c=1就是变量的初始化。因此你放进for循环里面是不会出错的
for(变量初值;循环条件;表达式)
#8
lzj125302013-06-06 08:03
你可以在什么变量的时候就对c初始化,即int c=1;
#9
我有我梦2013-06-06 08:22
lzj12530说是变量C出了问题,这个的确是的!!!不过不能能在定义C时就对C进行初始化!!!我感觉for循环里的c和mian函数里的c是不同的!!!
#10
我有我梦2013-06-06 08:23
加我QQ1206358260以后好好切磋切磋!!!!
#11
我有我梦2013-06-06 08:28
菜鸟切糕!!!!
#12
lzj125302013-06-06 08:54
变量的作用域即变量的可见性。
如果说这样
void main()
{
    int c=1;
    {
    int c=3;
    {
    char c=‘c’;
   
    }
    }

}
如果你在每个语句块里面都有声明,那么这些变量的作用域就仅限于语句块内部。所以你的程序,在主函数开头就声明初始化是没有问题的。
1