2008
05-04

main()
    {
     int x,y,z;
     x=0;
     while(x<=19)
          {
           y=0;
           while(y<=33)
                {
                 z=100-x-y;
                 if(5.0*x+3.0*y+z/3.0==100)
                 printf(“%d %d %d\n”,x,y,z);
                 else y++;
                 }
           x++;
           }
       getch();
      }


 


此程序中第13行加不加else得出的结果不一样。请问是怎么回事啊?


还有个比较菜的问题,就是3后面加点零就能保证得出的结果能被3整除吗?


谢谢详解!!


请教高手》有 2 条评论

  1. doctor 说:

    这个题目也是百钱买百鸡问题,加else时当if条件不满足时y才++,如果不加else则不论if条件是否满足y都增1,由于变量z是int的,所以如果/3则当z小于3时其结果为0,其目的不是为了整除

  2. jnqnjy 说:

    谢谢,第一个问题我自己琢磨出来了。你说的这个不是为了整除,那如果不是3.0,而是3的话,得出的结论多三组,正好是不能被3整除的也在其中了。

留下一个回复