货币柜台C程序

时间:2012-01-05 20:33:23

标签: c function if-statement

我生成的代码计算了20,10,5,2和1的最小数量,它们将累计到用户定义的金额。仅允许用户输入整数,即不输入小数值。我有两个问题。

  1. 如果不需要面额,程序会输出一个随机数而不是0.如何解决?
  2. 是否可以创建一个可以替换所有if语句和printf语句的函数?我是新手,所以对他们来说有点迷失。
  3. #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", &pounds);
        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;
    }
    

3 个答案:

答案 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中的随机事物。这就是为什么你得到随机数作为答案。