C语言中的货币面额

C语言中的货币面额,c,do-while,C,Do While,有人能帮我写代码吗 int main(void){ int money, x[6],i[6]; x[0] = 1000; x[1] = 500; x[2] = 200; x[3] = 100; x[4] = 50; x[5] = 20; printf("Enter your Money: "); scanf("%d", &money); printf("\nBreakdown:\n"); for(int y=0;money != 0; y++){ i[y] = ( m

有人能帮我写代码吗

int main(void){

int money, x[6],i[6];

x[0] = 1000; x[1] = 500; x[2] = 200; x[3] = 100; x[4] = 50; x[5] = 20;

printf("Enter your Money: ");
scanf("%d", &money);

printf("\nBreakdown:\n");

for(int y=0;money != 0; y++){

    i[y] = ( money - (money % x[y]) )/x[y];
    money = (money % x[y]);

    printf("%10d  x  %d  =  %5d \n", x[y], i[y], (x[y] * i[y]));

}
printf("---------------------------\n");
printf("Total:");
printf("                  %d", money);
getch()

}


如何检查是否有余数&它会说输入无效

这里有一个版本可以处理所有输入,而不仅仅是那些可以被20整除的输入

int main(void){

    int money, money2, x[7],i[7], y;

    x[0] = 1000; x[1] = 500; x[2] = 200; x[3] = 100; x[4] = 50; x[5] = 20, x[6] = 1;

    printf("Enter your Money: ");
    scanf("%d", &money);
    money2 = money;

    printf("\nBreakdown:\n");

    for(y=0;money >0; y++){

        i[y] = ( money - (money % x[y]) )/x[y];
        money = (money % x[y]);

        printf("%10d  x  %d  =  %5d \n", x[y], i[y], (x[y] * i[y]));

    }
    printf("---------------------------\n");
    printf("Total:");
    printf("                  %d", money2);

    getch();
}
所做的更改是

  • 阵列大小增加到7。并添加
    x[6]=1
    。这样可以确保最终案例得到处理

  • 添加了一个附加变量
    money2
    ,用于存储最后打印的总金额。在您的代码中,
    money
    变量被更改,在到达打印功能时其值为零


  • 您可以向数组添加更多值,如x[6]=5,x[7]=2,x[8]=1,我认为这是最好的主意。
    因此,您还可以计算5、2和1的倍数。
    否则

    你可以这样做

    int nTemp = money; //Take a temp variable to store total money 
    for(int y=0;money != 0 && y<6; y++){ // check both money!=0 and y should be less than 6
    
        i[y] = ( money - (money % x[y]) )/x[y];
        money = (money % x[y]);
    
        printf("%10d  x  %d  =  %5d \n", x[y], i[y], (x[y] * i[y]));
    }
    if(money>0) // if remainder is there you can print
       printf("Remaining change = %d\n", money);
    
    printf("---------------------------\n");
    printf("Total:");
    printf("                  %d", nTemp); // print nTemp here, i.e total money
    
    int-nTemp=money//取一个临时变量来存储总金额
    对于(int y=0;money!=0&&y0)//如果有余数,则可以打印
    printf(“剩余更改=%d\n”,货币);
    printf(“------------------------------------\n”);
    printf(“总计:”);
    printf(“%d”,nTemp);//在此处打印nTemp,即总金额
    
    如果您需要帮助,则需要描述您的代码存在的问题。具体来说,输入、预期行为/输出和实际行为/输出是什么?请不要以图片形式发布文本,因为这会阻止人们复制文本用于回答/评论。这不是问题。请仔细阅读。但是,如果您想知道程序退出时出现分段错误的原因,请考虑如果
    money
    不是20或50的倍数,那么
    y
    的值会发生什么变化。(也许将
    money!=0
    更改为
    y<6
    是个好主意。)在for循环中,您可以检查
    money!=0&&Y如果它不能被20整除,如何使它无效