#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++
}
是这个位置吗
新手问一个C语言问题 求解答!!!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- zhanjr 2016-11-07 01:16关注
你现在对if和for的作用范围不是很明确
if之后的{}中所有语句都在if成立后执行,if不成立不执行。
for中的++可以理解为在{}中的最后一步执行,即先执行++ 然后}结束。
所以第一问的if不成立执行b++。只有在b*24<=num;的情况下才会执行a++
同理,第二个if不成立的话,正处于第一个if的结尾,也是执行b++。只有在b*24<=num;的情况下才会执行a++本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog