回 帖 发 新 帖 刷新版面

主题:求助,求大大们帮忙

main()
{
 int a=0,b=0,c;                 \\为什么我在这里给b赋值为0,得出的结果就是 a=0,b=0,c=0
 while (a<=19)                      
  {                               \\当我在这一行给b赋值为0,就可以得出正确结果    
   while (b<=33)
    {
     c=100-a-b;
     if (5*a+3*b+c/3==100)
     printf("a=%d,b=%d,c=%d,\n",a,b,c);
     b++;
    }
   a++;
  }
}

回复列表 (共6个回复)

沙发

大大们帮帮偶吧

板凳

#include<stdlib.h>
#include<stdio.h>
int main()
{
    int a=0,b=0,c;                 //为什么我在这里给b赋值为0,得出的结果就是 a=0,b=0,c=0
    while (a<=19)                      
    {                               //当我在这一行给b赋值为0,就可以得出正确结果    
        while (b<=33)
        {
            c=100-a-b;
            if((5*a+3*b+c/3)==100)
            {    
                printf("a=%d,b=%d,c=%d,\n",a,b,c);
                //b++;               应该放在外面吧?         
            }
            b++;  
        }
        a++;
    }
    getchar();
    return 0;
}

3 楼

main()
{
    int a=0,b=0,c;                 //为什么我在这里给b赋值为0,得出的结果就是 a=0,b=0,c=0[color=FF0000](这是因为当执行第二个while(b<=33)
    时b从0加到34,此时b=34不再改变且跳出循环,只进行a++,则只能得出a=0;b=25;c=75)[/color]
    while (a<=19)
    {
        b=0;
        //当我在这一行给b赋值为0,就可以得出正确结果([color=00FF00]在这里while(b<=33)当b=34时跳出循环,执行b=0;
        继续执行while(b<=33),如此重复)[/color]        while (b<=33)
        {
            c=100-a-b;
            if (5*a+3*b+c/3==100)
                printf("a=%d,b=%d,c=%d,\n",a,b,c);
            b++;
        }
        a++;
    }
}

4 楼

谢谢ZBC19921123啊,令我茅塞顿开

5 楼

[color=FF0000]不客气,我也是初学,建议你遇到这种问题时去Debugger跟踪调试。[/color]

6 楼

<1>debug添加监视条件,当b==0
<2>写Log.txt,看log里面数据规律
<3>找相关变量赋值的地方
<4>了解变量的生存周期

我来回复

您尚未登录,请登录后再回复。点此登录或注册