Денежный счетчик C программа - PullRequest
4 голосов
/ 06 января 2012

Я сгенерировал код, который подсчитывает минимальное количество 20-х, 10-х, 5-х, 2-х и 1-х, которое будет складываться до определенной пользователем суммы денег.Пользователь может вводить только целые числа, т.е. без десятичных значений.У меня два вопроса.

  1. Если деноминация не нужна, программа выводит случайное число вместо 0. Как это исправить?
  2. Можно ли создать функциючто может заменить все операторы if и, возможно, операторы 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", &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 ]

5 голосов
/ 06 января 2012

Это отличный пример того, почему вы должны инициализировать свои переменные при их объявлении.

Если pounds<20, то twenty никогда не будет инициализирован. В C переменным присваивается (в основном) случайное значение, пока вы не замените их чем-то другим.

Вам просто нужно сделать это:

int one = 0, two = 0, five = 0, ten = 0, twenty = 0;
2 голосов
/ 06 января 2012

Хорошей практикой всегда является инициализация всех ваших переменных равными 0, когда вы объявляете их. Таким образом, вы не получите случайное значение, если нет деноминаций. Вы можете объявить и инициировать ваши переменные одновременно, выполнив следующее:

int a = 0;

или, если их много:

int a = 0, b = 0, c = 0;

Если вы не инициализируете свои переменные до того, как используете их, данные, которые они в них хранят, будут случайными вещами, которые были у вас в памяти до того, как вы выполнили свою программу. Вот почему вы получаете случайные числа в качестве ответов.

2 голосов
/ 06 января 2012

Чтобы вывести 0, просто инициализируйте все ваши переменные равными 0, в противном случае им будут назначены "ненужные" значения:

int one = 0, two = 0, five = 0, ten = 0, twenty = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...