前一行的结果(C编程)

1 c

我正在参加一个C编程课,我正在本书中练习练习题.其中一个问题是:

编写一个程序,要求用户输入美元金额,然后显示如何使用最小数量的$ 20,$ 10,$ 5,%1账单支付该金额:

示例如下:在尝试我的代码时我可能忽略了一些东西.

输入美元金额:93(用户输入)

20美元钞票:4
美元10张钞票:1
美元5张钞票:0
美元1张钞票:3

到目前为止我所拥有的是:

#include <stdio.h>

int main (void) 
{
 int cash;

 printf("Enter a dollar amount: ");
 scanf("%d", &cash);

 printf("$20 bills = %d\n", cash / 20);
 printf("$10 bills = %d\n", cash / 10);
 printf("$5 bills = %d\n", cash / 5);
 printf("$1 bills = %d\n", cash / 1);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是,这本书建议将输入数字(93)除以20,因为我使用的是int代替float,4而不是4.65.然后它建议减去那些时间的结果20,从中93,离开13,并重复每个时间的结果.所以它会是:

93/20=4
13/10=1
3/1=3
Run Code Online (Sandbox Code Playgroud)

如何让printf("$10 bills = %d\n", cash / 10);线条识别前一行留下的值printf("$20 bills = %d\n", cash / 20);?我原本试图把它的大部分放在20条线上,比如说cash / 20 * 20,但它只显示80在那条线而不是下一条线上.

小智 9

我想你在这里有点误.如你所说,价值不会被前者留下printf.您需要更新变量的值cash.这有什么可以帮助:

#include <stdio.h>

int main (void) 
{
    int cash;

    printf("Enter a dollar amount: ");
    scanf("%d", &cash);

    printf("$20 bills = %d\n", cash / 20);
    cash = cash % 20;
    printf("$10 bills = %d\n", cash / 10);
    cash = cash % 10;
    printf("$5 bills = %d\n", cash / 5);
    cash = cash % 5;
    printf("$1 bills = %d\n", cash);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

模数(%)运算符会在执行除法后返回余数.因此:

93 % 20 = 13
13 % 10 = 3
Run Code Online (Sandbox Code Playgroud)

等等.


Ima*_*ist 5

cash是一个变量意味着它可以在价值上变化.换句话说,您可以更改现金的价值.

%操作符返回从余数.所以如果你这样做,cash = 93 % 20;那么cash应该包含13.

请记住,您也可以设置cash自己.所以cash = cash % 20;将设置cash为剩余部分的值cash / 20.