C Programmierung bitte um kurze Hilfe?

... komplette Frage anzeigen

5 Antworten

scanf will etwas einlesen und braucht dazu die Adressen der zu überschreibenden Speicherplätze (daher übergibt man &var als Argument).

printf will die Werte selbst haben. Daher ohne &.

Eigentlich hätte der Compiler eine Warnung ausgeben müssen die Dir einen Hinweis gibt.
(hast Du vielleicht nicht alle includes drin und/oder Warnungen abgeschaltet?)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von maximilianus7
02.02.2016, 23:38

der compiler kann grundsätzlich NICHT überprüfen, ob die werte-parameter sinnvoll sind. dies hängt ja vom format-string ab.
es soll hier eine adresse als gleitkommazahl interpretiert werden. und so wirds dann auch gemacht. da die ersten 9 bits =0 sind ist das ergebnis auf jeden fall =0.

https://de.wikipedia.org/wiki/IEEE_754

0

Beim ersten Code referenzierst du den Verbrauch im Ausgabebefehl. Könnte das das Problem sein?

printf("Ihr Durchschnittsverbrauch beträgt %.lf", &durchschnitt);
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von JuicyLuisian
02.02.2016, 19:05

Das ist das Problem.

0
Kommentar von littledave94
02.02.2016, 19:09

Wie meinst du das? wie hätte denn die Zeile denn korrekt aussehen sollen? 

0

Kann es sein das "druchschnitt" ein int ist?

Wenn das Ergebnis eine komma Zahl von 0 bis 1 ist wird auf 0 abgerundet.

Kann das sein? 

Antwort bewerten Vielen Dank für Deine Bewertung

Das Problem ist, dass Du mit &strecke nicht den Wert angibst, sondern dessen Adresse im Speicher. Daher müsste Dein Code lauten (mit sonst noch kleinen Verbesserungen):

int main (void)

{
double verbrauch, strecke, durchschnitt;
printf("\\nBitte geben Sie ihren gesamten Verbrauch in l an: ");
scanf("%lf", &verbrauch);
printf("\\nBitte geben Sie ihre gefahrenen KM an: ");
scanf("%lf", &strecke);

durchschnitt = verbrauch * 100 / strecke;

printf("Ihr Durchschnittsverbrauch betr\\x84gt %.2f l/100km\\n", durchschnitt);
return 0;
}
Antwort bewerten Vielen Dank für Deine Bewertung

Bei printf muss der &-Operator weg, sonst gibst du die Adresse und nicht den Wert der Variable aus!

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?