用c语言编写一个可以将一个任意数额的按多少一百,五十,10块,5块,1块,1毛,五分

用c语言编写一个可以将一个任意数额的按多少一百,五十,10块,5块,1块,1毛,五分

/*

注意:

1. buf æ˜¯ä¸€ä¸ªæ•°ç»„,sum æ˜¯æ€»é’±æ•°ï¼ˆå¦‚果总钱数为 273.15,最好输入 273.1501,否则可能会出现结果不对的情况)

2. è¯¥å‡½æ•°ä¸æ£€æŸ¥ buf çš„数组边界,请务必注意。

3. è¯¥å‡½æ•°æŠŠ sum å…ƒé’±åˆ†æˆ 100 å…ƒã€50 å…ƒã€10 å…ƒã€5 å…ƒã€1 å…ƒã€0.1 å…ƒã€0.05 å…ƒï¼Œå°†åˆ†é’±ç»“果放入 buf ä¸­ï¼Œå¹¶åœ¨æœ€åŽåŠ å…¥ 0 è¡¨ç¤ºåˆ†é’±ç»“束。

*/

void splitmoney(float * buf, float sum)
{
    int n = 0;
    while ((int)(sum / 100) != 0)
    {
        buf[n] = 100.0;
        sum -= 100;
        n += 1;
    }
    while ((int)(sum / 50) != 0)
    {
        buf[n] = 50.0;
        sum -= 50;
        n += 1;
    }
    while ((int)(sum / 10) != 0)
    {
        buf[n] = 10.0;
        sum -= 10;
        n += 1;
    }
    while ((int)(sum / 5) != 0)
    {
        buf[n] = 5.0;
        sum -= 5;
        n += 1;
    }
    while ((int)(sum / 1) != 0)
    {
        buf[n] = 1.0;
        sum -= 1;
        n += 1;
    }
    while ((int)(sum / 0.1) != 0)
    {
        buf[n] = 0.1;
        sum -= 0.1;
        n += 1;
    }
    while ((int)(sum / 0.05) != 0)
    {
        buf[n] = 0.05;
        sum -= 0.05;
        n += 1;
    }
    buf[n] = 0;
}

/* è¾“出分钱结果要像下面这样输出 */

#include <stdio.h>

int main()
{
    float arr[256] = {0.0};
    int i = 0;
    splitmoney(arr, 297.1501);
    while (arr[i] != 0)
    {
        printf("%f\n", arr[i]);
        i += 1;
    }
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答