入门C语言求解答这道怎么编写啊

某品牌巧克力使用500克原料可制作55小块巧克力,请编程实现:输入原料重量(以千克为单位),计算出制作巧克力的块数(四舍五入)。然后对这些巧克力进行分包,小盒放11块,大盒放24块,问各分装多少大盒多少小盒剩余巧克力块数最少。
不要太高深

算出总数
循环减去大盒块数(第一次先减0),剩余数量与小盒块数求余,记录最小的数字及对应盒数组合(为0则直接结束循环)

没有用到什么数学原理,上面的基本算法可以考虑优化方案以减少循环次数

http://blog.csdn.net/sinat_26594567/article/details/48008489?locationNum=1&fps=1


 int main(){
    while (true) {
        cout << "请输入您的原料重量";
        double a;
        scanf("%lf",&a);
        int x=(a*110)+0.5;//x为制作出来的数量,四舍五入
        string s="您制作了",ss="个巧克力\n";
        cout << s << x<< ss;
        int b=x%11;//假设全部使用小盒子
        int c=x%24;//假设全部使用大盒子
        int d=x%35;//一个大盒子,一个小盒子
        if (b==0) {
            cout << "使用了" <<x/11<< "个小盒子,剩余0个";
        }else if(c==0){
            cout << "使用了" <<x/24<< "个大盒子,剩余0个";
        }else if(d==0){
            cout << "使用了" <<x/35<< "个大和" << x/35 << "盒子,剩余0个";
        }else{
            int min=10;
            if (b<min) {
                min=b;
                cout << "使用了" <<x/11<< "个小盒子,剩余" << min << "个";
            }
            if (c<min) {
                min=c;
                cout << "使用了" <<x/24<< "个大盒子,剩余" << min << "个";
            }
            if (d<min) {
                min=d;
                 cout << "使用了" <<x/35<< "个大和" << x/35 << "盒子,剩余" << min << "个";
            }
        }
    }
}


//
//  main.cpp
//  Myfirst
//
//  Created by 孙思远 on 2016/10/19.
//  Copyright © 2016年 孙思远. All rights reserved.
//

#include <iostream>
#include <iomanip>
using namespace std;
int small=0,big=0;
/*获取剩余的数量*/
int getSurplus(int x){
    int b=x%11;//假设全部使用小盒子
    int c=x%24;//假设全部使用大盒子
    if (b==0) {
        small+=x/11;
        return b;
    }else if(c==0){
        big+=x/24;
        return c;
    }else {
        if (x>24) {
            int max=b>c?b:c;
            if (max>=11) {
                if (max==b) {
                    small+=x/11;
                }else{
                    big+=x/24;
                }
                int min=getSurplus(max);
                return min;
            }
        }
        int min=b<c?b:c;
        if (min==b) {
            small+=x/11;
        }else{
            big+=x/24;
        }

        return min;
    }
    return 0;
}

int main(){
    while (true) {
        small=big=0;
        printf("请输入您的原料重量\n");
        double a;
        scanf("%lf",&a);
        int x=(a*110)+0.5;//x为制作出来的数量,四舍五入
        printf("您制作了%d个巧克力\n",x);
        int k=getSurplus(x);
        while (k>11) {
            k=getSurplus(k);
        }
        printf("剩余%d个\n",k);
        printf("使用了%d个小盒子,%d个大盒子\n",small,big);
    }
}


整个下午全给你思考问题,验证问题了。。。

if (x>24) {//如果输入的个数不能满足大盒子,那么直接跳过大盒子,运算小盒子
int max=b>c?b:c;
if (max>=11) {//如果全部使用大盒子,那么如果剩下了的巧克力大于小盒子的容量,那么就可以使用小盒子
if (max==b) {
small+=x/11;//对小盒子的个数进行叠加,获取最终用了多少小盒子
}else{
big+=x/24;//同上,大盒子
}
int min=getSurplus(max);//重新进入运算,分配小盒子
return min;
}
}
int min=b<c?b:c;//分配最终的小盒子
if (min==b) {
small+=x/11;//同上面的解释
}else{
big+=x/24;//同上面的解释
}

    return min;//返回剩余的数量