2016-11-09 4 views
-3

Ok, im Grunde genommen versuche ich ein Programm zu erstellen, das einen KPH von 185 annimmt und es in MPH umwandelt. (Unter Verwendung von Prototypen) Kilometer pro Stunde Meilen pro Stunde umgerechnet:Syntaxfehler in meinem C-Code?

Kph  Mph 
185  115 
180  112 
175  109 
... ... 
10  6 
5  3 
0  0 

Leider ist meine Umwandlung ein bisschen weg, kann jemand einige Informationen beachten, warum das so sein?

#include <stdio.h> 

// Prototypes 
double mph2kph(double); // convert Miles to KM 
double kph2mph(double); // convert KM to Miles 

int main() 
{ 

    int loop = 1; 
    double kph = 185;    // kilometers per hour 
    double mph = 115;    // miles per hour for computation 

    printf("Kilometers per hour converted to miles per hour: \n"); 
    printf("Kph   Mph\n"); // Display Header 

    while (loop == 1){ 
     printf("%.2d  %.2d \n", kph, kph2mph(kph)); 
     break; 
    } 
loop = 0; 

} 

//Other Functions: 
double mph2kph(double x){ 
    return x*1.61; 
} 

double kph2mph(double x){ 
    return x*1.61; 
} 

Output =

Kilometers per hour converted to miles per hour:                                    
Kph   Mph                                            
40325120  38090656 
+0

Wenn es kompiliert ist es kein "Syntaxfehler". Es kann sehr gut Code sein, der falsch geschrieben wird. – user2864740

+1

Und ja, Ihr Code ist in der Tat trivialerweise falsch. Wie kann es in beiden Fällen die gleiche Formel sein? – user2864740

+4

'% d' ist für' int' Argumente, nicht 'doppelte' Argumente. – aschepler

Antwort

0

Ich habe einige Änderungen an Ihrem Programm gemacht gewünschten Ausgang zu geben. Einige Fehler in Ihrem Programm werden bereits von anderen Benutzern erkannt. Vergleiche das mit deinem und versuche zu lernen. Viel Glück!

#include <stdio.h> 

// Prototypes 
double mph2kph(double); // convert Miles to KM 
double kph2mph(double); // convert KM to Miles 

int main() 
{ 

int loop = 1; 
int kph = 185;    // kilometers per hour 
double mph = 115;    // miles per hour for computation 

printf("Kilometers per hour converted to miles per hour: \n"); 
printf("Kph   Mph\n"); // Display Header 

while (kph != -5){ 
    printf("%d  %.2lf \n", kph, kph2mph(kph)); 
    getchar(); 
    kph = kph - 5; 
} 

} 

//Other Functions: 
double mph2kph(double x){ 
    return x*1.61; 
} 

double kph2mph(double x){ 
    return x/1.61; 
} 
+0

Danke für die Hilfe, mir war nicht bewusst, dass eine While-Schleife die beste Option wäre. Wie würde ich es komplett Schleife machen, bis kph = 0 und mph = 0? – Ardowi

+0

Die Bedingung 'kph! = -5' stellt sicher, dass die 'while'-Schleife fortgesetzt wird, bis kph -5 erreicht. Beachten Sie, dass kph bei jeder Iteration um 5 dekrementiert wird. – VHS

2

Sie %d verwenden, um Ihr Endergebnis zu zeigen, die für int Variablen verwendet wird. In Ihrem Fall, wie Sie double Variablen verwenden, sollten Sie für %f oder %lf gehen.

Auch Ihre Kilometer pro Stunde zu Meilen pro Stunde Umrechnungsfunktion ist falsch. Sie sollten teilen und nicht multiplizieren.

double kph2mph(double x){ 
    return x/1.61; 
} 

Testen Sie Ihren Code mit diesen Korrekturen führt zu richtigen Ergebnissen:

Kilometers per hour converted to miles per hour: 
Kph   Mph 
185.00  114.91 
+0

['% lf' und'% f' werden für 'printf' identisch behandelt (http://stackoverflow.com/a/4264154/1270789). –

+0

@ KenY-N Fairer Punkt. Ich bearbeite die Antwort auf diese Weise. – Isuka

+0

@Isuka: Obwohl "% f" gut vier "double" funktioniert, gab es keinen Grund, die Antwort zu bearbeiten. Ganz im Gegenteil, da C99 '% lf' von' printf' unterstützt wird. Und es ist eigentlich eine bessere Idee, '% lf' für' double' zu ​​verwenden und '% f' für' float' reserviert zu lassen. Dadurch bleibt 'printf' konsistent mit' scanf'. – AnT