#include
int main()
{
int a,b,c,d,num=0,min=9999,s=0;
double n,x;
scanf("%lf",&n);
n=n*1000;
x=((n*55)/500.0);
if(x>=(int)x+0.5)
num=(int)x+1;
else num=(int)x;
for(a=0;a*11<=num;a++)
for(b=0;b*24<=num;b++)
{
if(a*11+b*24<=num)
{
s=num-(a*11+b*24);
if(s<min)
{
c=a,d=b;
min=s;
}
}
}
printf("装%d小盒\n装%d大盒\n剩余%d块.",c,d,min);
return 0;
}
某品牌巧克力使用500克原料可制作55小块巧克力,请编程实现:输入原料重量(以千克为单位),计算出制作巧克力的块数(四舍五入)。然后对这些巧克力进行分包,小盒放11块,大盒放24块,问各分装多少大盒多少小盒剩余巧克力块数最少
这是题目
for(a=0;a*11<=num;a++)
for(b=0;b*24<=num;b++)
{
if(a*11+b*24<=num)
{
s=num-(a*11+b*24);
if(s<min)
{
c=a,d=b;
min=s;
}
}
}
这里有几个地方不明白
if(a*11+b*24<=num) 不成立 程序怎么走? 是跳出内部循环然后进行一次a++再次进入 内部循环b++吗
if(s<min)不成立程序怎么走? 是在进行一次b++吗
b++如果放下面应该放在哪个位置?
c=a,d=b;
min=s;
}
}
b++
}
是这个位置吗
同问0
|
浏览36
|
收藏0
|
if(s<min)不成立程序怎么走?
和前一个问题回答一样
b++也可以放在和内侧循环配对的花括号的前面,如下:
for(b=0;b*24<=num;)
{
if(a*11+b*24<=num)
{
s=num-(a*11+b*24);
if(s<min)
{
c=a,d=b;
min=s;
}
}
b++;
}
if(a*11+b*24<=num) 不成立 程序怎么走?
先b++,然后判断b*24<=num
如果满足,直接回到内侧循环,不满足,才执行a++,如果a*11<=num也不满足,跳出外侧循环,否则进入新的内循环,b=0被执行
你单步执行下就知道了。
if(a*11+b*24<=num) 不成立 程序怎么走? 是跳出内部循环然后进行一次a++再次进入 内部循环b++吗
if条件为false的时候,会继续顺序执行,顺序执行内容为空继续执行for循环,也就是b++,然后判断b*24 <= num
if(s<min)不成立程序怎么走? 是在进行一次b++吗
原理同上
b++如果放下面应该放在哪个位置?
建议楼主可以去看一下c语言的基础教程,尤其是for循环的执行顺序,以上问题就应该都迎刃而解了。
if看看自己的书上的语句和for循环