我生成的代码计算了20,10,5,2和1的最小数量,它们将累计到用户定义的金额。仅允许用户输入整数,即不输入小数值。我有两个问题。
printf
语句的函数?我是新手,所以对他们来说有点迷失。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int pounds;
int one, two, five, ten, twenty;
printf("Enter a pounds amount with no decimals, max E999999: \n");
scanf("%d", £s);
printf("%d\n", pounds);
if(pounds >= 20)
{
twenty = (pounds / 20);
pounds = (pounds-(twenty * 20));
printf("%d\n", pounds);
}
if(pounds >= 10)
{
ten = (pounds / 10);
pounds = (pounds-(ten * 10));
printf("%d\n", pounds);
}
if(pounds >= 5)
{
five = (pounds / 5);
pounds = (pounds-(five * 5));
printf("%d\n", pounds);
}
if(pounds >= 2)
{
two = (pounds / 2);
pounds = (pounds-(two * 2));
printf("%d\n", pounds);
}
if(pounds >= 1)
{
one = (pounds / 1);
pounds = (pounds-(one * 1));
printf("%d\n", pounds);
}
printf("The smallest amount of denominations you need are: \n");
printf("20 x %d\n", twenty);
printf("10 x %d\n", ten);
printf("5 x %d\n", five);
printf("2 x %d\n", two);
printf("1 x %d\n", one);
return 0;
}
答案 0 :(得分:5)
这是一个很好的例子,说明在声明变量时应该初始化变量的原因。
如果pounds<20
,那么twenty
永远不会被初始化。在C中,变量具有(基本上)分配给它们的随机值,直到用其他东西替换它。
你只需要这样做:
int one = 0, two = 0, five = 0, ten = 0, twenty = 0;
答案 1 :(得分:2)
输出0只是将所有变量初始化为0,否则将为它们分配“垃圾”值:
int one = 0, two = 0, five = 0, ten = 0, twenty = 0;
答案 2 :(得分:2)
在声明它们时,将所有变量初始化为0始终是一个好习惯。这样,如果没有面额,你就不会得到一个随机值。 您可以通过以下方式同时声明和启动变量:
int a = 0;
或者如果它们很多:
int a = 0, b = 0, c = 0;
如果您在使用它们之前没有初始化变量,那么它们存储在其中的数据将是您执行程序之前在ram中的随机事物。这就是为什么你得到随机数作为答案。