更改计算器(打印最终值)

标签 c

我正在编写一个代码,它采用 1 到 100 之间的值并将其转换为零钱(即 16 美分等于 1 毛钱、1 镍币和 1 分)。我的问题是当我打印更改值时。

标点符号必须正确,因此对于 10 美分,它必须是“1 dime”。而不是“一毛钱”。

除了使用大量的 if 语句之外,是否有一种更有效的方法来考虑拥有 25 美分,但没有镍币/10 分/美分,拥有 25 美分和镍币,但没有镍币/美分等所有可能性。并打印更改输出的写入标点符号/组合?

谢谢!!!

// quarters
    if (quarters== 1 && dimes==0 && nickels==0 && cents == 0)
        printf("%d quarter.", quarters);
    else if (quarters>= 1 && dimes==0 && nickels==0 && cents == 0)
        printf("%d quarters.", quarters);
    // include other combinations
    else if (quarters==1)
        printf("%d quarter, ", quarters);
    else if (quarters>=1)
        printf("%d quarters, ", quarters);

最佳答案

关于逗号和句号:

如果是一角、五分或美分,则在季度之后会有一个逗号。 因此,不要测试 dime 是否不是 0nickel 是否不是 0cent > 不是 0,您可以将这些值相加并测试它是否为 0

关于,您只需知道他们的1枚或更多硬币即可。

鉴于此,您可以创建一个仅格式化一种硬币类型的函数。该函数应该负责选择是否添加“s”,并在逗号和句点之间进行选择。每个选择都可以通过一个 if/else 测试来做出,因此您可以:

#include <stdio.h>
/*
  what: name of coin
  quantity: number of coin
  rest: coins that must be displayed after
*/
void print_coin(const char *what, int quantity, int rest)
{
    /* is there something to display*/
    if (0 == quantity)
        { return; }
    /* One coin*/    
    else if (1 == quantity)
        { printf("1 %s", what) ;}
    /* several coins, add an 's' */
    else
       { printf("%d %ss", quantity, what) ;}

    /* choose between comma and period */
    if (rest > 0)
        { printf(", ");}
    else 
        { printf(".\n");}
}

/* print all coins function */
void print_coins(int quarter, int dime, int nickel)
{
    /* print each coins, one after the other */

    print_coin("quarter", quarter, dime + nickel);
    print_coin("dime", dime, nickel);
    print_coin("nickel", nickel, 0);
}

int main(void)
{
    /* examples */
    print_coins(1, 2, 3);
    print_coins(1, 0, 1);
    print_coins(1, 0, 0);
    return 0;
}

关于更改计算器(打印最终值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48435393/

相关文章:

c - 将额外参数传递给 qsort 的比较器

C:使用引用调用交换键盘音符

python - python 如何支持字符串中的空字符?

c - 如何在C中用0填充数组

c++ - mingw中发送信号的 "kill"函数在哪里?

c - printf 覆盖看似不相关的数据?

c - 在 C 中多次使用 Ctrl+C

c - 哪个效率更高 : char str[] or char *str?

c++ - 为什么没有返回语句时没有任何编译器错误?

php - 使用 proc_open() 在 PHP 中运行 C 可执行文件