2016-06-01 6 views
-1

In der Ausgabe zeigt immer die Anzahl der Dollar an, so dass ich nicht weiß, wie das Problem zu lösen ist. Bitte helfen Sie mir herauszufinden, was das Problem ist."new_dollars = dollars + cents/100" KEINE ÄNDERUNG

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

'cent/100' ist immer 0, da es eine ganze Zahl ist. Warum musst du es trotzdem hinzufügen? –

+2

Umgekehrte Reihenfolge 'cent = cent% 100;' und 'new_dollars = Dollar + cent/100;' – chux

+1

Minor: Wahrscheinlich wollen '" $% i.% 02i "' vs. '" $% i.% 2i "' (add '0') – chux

Antwort

4

Die Kommentatoren haben Recht über Integer Division. Versuchen Sie dieses, es hat die Reihenfolge zwei Linien, die die Berechnung tun vertauscht, so wird cents noch einen nützlichen Wert haben, wenn Sie es brauchen zu:

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

Hallo Alastair Brown, ich habe den Code nach Ihren Anweisungen versucht. Geben Sie Dollar ein: 4 Geben Sie Cent ein: 300 $ 7. 0 Die Ausgabe von new_dollars ist gleich Dollar. Keine Änderung. Es sieht aus wie "Cent/100 = 0". – Nikki

+0

@Nikki Haben Sie '300 7' als Wert für Cent eingegeben? – shawnt00

+0

Beachten Sie, dass Sie '% .2i' oder'% 02i' (oder '% .2d' usw.) für die Cents verwenden sollten, um sicherzustellen, dass 1 Dollar 2 Cent als' 1.02' anstelle von '1 gedruckt wird. 2'. –

0
  1. convert „int new_dollars“ in „float new_dollars“;

  2. new_dollars = (float) Dollar + (Float) Cent/100;

  3. printf ("$%. 2f \ n", neue_dollars);

+1

Die Verwendung von 'float' kann für dieses winzige Programm funktionieren, aber es ist die falsche Art, mit Dezimalbrüchen im Allgemeinen umzugehen. Sie waren bereits in der Nähe, wenn Sie meinen obigen Kommentar bemerken. – shawnt00

Verwandte Themen