2016-06-01 42 views
-1

在输出中,new_dollars总是显示美元的数量,所以我不知道如何解决问题。请帮我弄清楚是什么问题。“new_dollars =美元+美分/ 100”无变化

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", &cents); 

     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; 
} 
+1

'cents/100'总是0,因为它是整数除法。无论如何,你为什么需要添加它? –

+2

反向订单'美分=美分%100;'''和'new_dollars =美元+美分/ 100;' – chux

+1

未成年人:可能想要''$%i。%02i''''$%i。%2i''(加'0') – chux

回答

4

评论者对整数除法是正确的。试试这个,它有秩序两行做交换的计算,所以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", &cents); 

     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; 
} 
+0

嗨阿拉斯泰尔布朗,我按照你的指示尝试了代码。 输入美元:4 输入美分:300 7美元。 0 new_dollars的输出等于美元。不用找了。它看起来像“美分/ 100 = 0”。 – Nikki

+0

@Nikki您是否输入'300 7'作为分值? – shawnt00

+0

请注意,您应该使用'%.2i'或'%02i'(或'%.2d'等)来确保1美分2美分印刷为“1.02”而不是“1”。 2'。 –

0
  1. 转换“INT new_dollars”到“浮new_dollars”;

  2. new_dollars =(浮动)美元+(浮动)美分/ 100;

  3. printf(“$%。2f \ n”,new_dollars);

+1

使用'float'可能适用于这个小程序,但它通常是处理小数部分的错误方法。如果您注意到我上面的评论,您已经接近。 – shawnt00