C &引用;新美元=美元+;美分/100“;不变
在输出中,C &引用;新美元=美元+;美分/100“;不变,c,C,在输出中,new_$s总是显示美元数,所以我不知道如何解决这个问题。请帮我找出问题所在 int main(void) { int dollars, cents, count, new_dollars; for ( count = 1; count <= 10; ++count){ printf ("Enter dollars: "); scanf ("%i", &dollars); printf ("Enter c
new_$s
总是显示美元数,所以我不知道如何解决这个问题。请帮我找出问题所在
int main(void)
{
int dollars, cents, count, new_dollars;
for ( count = 1; count <= 10; ++count){
printf ("Enter dollars: ");
scanf ("%i", &dollars);
printf ("Enter cents: ");
scanf ("%i", ¢s);
if ( cents >= 100 ){
cents = cents % 100;
new_dollars = dollars + cents / 100;
printf ("%i\n", new_dollars);
printf ("$%i.%2i\n\n", new_dollars, cents);
}
else {
printf ("$%i.%2i\n\n", dollars, cents);
}
}
return 0;
}
int main(无效)
{
整数美元、美分、计数、新美元;
用于(计数=1;计数=100){
美分=美分%100;
新美元=美元+美分/100;
printf(“%i\n”,新美元);
printf($%i.%2i\n\n),新币,美分);
}
否则{
printf(“$%i.%2i\n\n”,美元,美分);
}
}
返回0;
}
关于整数除法的评论是正确的。尝试此操作,它会将执行计算的两行顺序交换,因此当您需要时,cents
仍将具有有用的值:
int main(void)
{
int dollars, cents, count, new_dollars;
for ( count = 1; count <= 10; ++count){
printf ("Enter dollars: ");
scanf ("%i", &dollars);
printf ("Enter cents: ");
scanf ("%i", ¢s);
if ( cents >= 100 ){
new_dollars = dollars + cents / 100;
cents = cents % 100;
printf ("%i\n", new_dollars);
printf ("$%i.%2i\n\n", new_dollars, cents);
}
else {
printf ("$%i.%2i\n\n", dollars, cents);
}
}
return 0;
}
int main(无效)
{
整数美元、美分、计数、新美元;
用于(计数=1;计数=100){
新美元=美元+美分/100;
美分=美分%100;
printf(“%i\n”,新美元);
printf($%i.%2i\n\n),新币,美分);
}
否则{
printf(“$%i.%2i\n\n”,美元,美分);
}
}
返回0;
}
cents/100
始终为0,因为它是整数除法。你为什么还要添加它呢?按相反顺序cents=cents%100代码>和新美元=美元+美分/100代码>次要:可能希望“$%i.%02i”
与“$%i.%2i”
(添加0
)当美分大于100时,我使用“美分/100”提取整数部分,并将其添加到美元。@Nikki美分在应用于自身的%
操作后不能大于99。你需要用下面的行来交换它。嗨,阿拉斯泰尔·布朗,我按照你的指令尝试了代码。输入美元:4输入美分:300 7美元7。新美元的产出等于美元。没有变化。它看起来像“美分/100=0”。@Nikki您是否输入了300 7
作为美分的值?请注意,您应该使用%.2i
或%02i
(或%.2d
等)作为美分,以确保1美元2美分打印为1.02
,而不是1。2
。使用float
可能适用于这个小程序,但通常处理小数的方法是错误的。如果你注意到我上面的评论,你已经很接近了。