gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:51:15 24 4
gpt4 key购买 nike

我正在编写一个代码,它采用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com