#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, c, d, e;
printf("Enter the change amount in Dollars: ");
scanf("%d", &a);
b = a % 50;
printf("Number of 100 Dollar bills = %d \n", b);
c = a % 10;
printf("Number of 50 Dollar bills = %d \n", c);
d = a % 5;
printf("Number of 20 Dollar bills = %d \n", d);
e = a % 1;
printf("Number of 1 Dollar bills = %d \n", e);
return(0);
}
它返回错误的答案。如何解决这个问题?
............................................... ...............................
答案 0 :(得分:2)
以下是该计划的错误:
我们来看看这个计算:b = a % 50;
这给了我们:100 % 50 = 0;
(如果我们说输入是100)
当你试图取b的模数时会发生什么:c = b % 10;
这将为您留下0 % 10 = 0
你试图找出100除以50的余数是多少,这是零。
要解决此问题(使用您的作业):
步骤1.将输入除以100(表示100美元钞票)
步骤2.现在取输入的模数和100的数量 - 然后除以50的数量(代表50美元的钞票)。
以下是一个更好理解的例子:
让我们说你要改变的金额是285,然后:
285 / 100 = 2
(这应该是2.85,但由于您使用的是整数,因此无法表示小数)
接下来:
285 / 100 = 2
285 % 100 / 50 = 1
285 % 100 % 50 / 20 = 1
285 % 100 % 50 % 20 / 1 = 15
<start value> % <previous compare value> / <newest compare value>
这导致:
100美元钞票:2
50美元钞票:1
20美元钞票:1
1美元钞票:15
这相当于285美元。
#include <stdio.h>
#include <stdlib.h>
int main(){
int a, b, c, d, e;
printf("Enter the change amount in Dollars: ");
scanf("%d", &a);
b = a/100;
c = (a%100)/50;
d = (a%100%50)/20;
e = (a%100%50%20)/1;
printf("Number of 100 Dollar bills = %d \n", b);
printf("Number of 50 Dollar bills = %d \n", c);
printf("Number of 20 Dollar bills = %d \n", d);
printf("Number of 1 Dollar bills = %d \n", e);
return(0);
}
以良好的方式安排您的C代码,如果您从C开始并希望让其他人帮助您或与其他程序员协作,您应该改进设置命令的方式。
看看我发布的解决方案,看看我如何分离计算和打印功能。这将有助于提高可读性并让您走上良好的编程之路!
如果在Stackoverflow.com上发布,请尽量使用尽可能多的时间来解释您的问题,最好是您的代码及其目的!