2017-05-03 3 views
-3
#include<stdio.h> 

int main() { 
    int m,n; 
    float cake; 

    printf("Enter total kgs of cake:"); 
    scanf("&d", &n); 

    printf("Enter the number of friends:"); 
    scanf("&d", &m); 

    cake = m/n; 
    printf(He has to distribute %f kg cake to each of his %d friends", 
     &cake, &m); 

} 

Wenn ich dieses Programm in Codeblöcken ausgeführt wird, fragt es für mich nur insgesamt kg Kuchen geben, wenn ich es ein und klicken Sie auf eingeben, das Programm druckt gerade alles andere in den printf Funktionen unter anstatt mich zu bitten, die Anzahl der Freunde einzugeben.C-Programm Output Error

+1

'scanf ("% d ", & n)'. Ich frage mich, wie der Compiler es ignorieren kann. –

+1

Es ist nicht das erste Mal, dass ich eine Frage mit '& d' anstelle von'% d' sehe. –

+1

@RohanKumar: 'printf (Er muss% f kg Kuchen an jeden seiner% d Freunde verteilen", & cake, &m); 'Kompiliert nicht (fehlendes Angebot beim Start) –

Antwort

4
scanf("&d", &n); 

scanf("&d", &m); 

Sie müssen es

scanf("%d", &n); 

scanf("%d", &m); 

Zusätzlich in printf Funktion ändern Sie nicht Adresse der Variablen

1

Es gibt mehrere Probleme in Ihrem Code passieren sollte. Zuerst Ihre scanf() sollte wie folgt sein:

scanf("%d", &var); 

Next off ist in Ihrer printf Aussage. In der Var-Sektion hast du und &m gemacht, was falsch ist, weil du die Adresse der Variable drucken willst. Um das zu beheben, entfernen Sie die &.

4

Die "& d" enthält die Adresse der bestimmten Variablen. Sie müssen also die scanf("&d",&m) zu scanf("%d",&m) und scanf("&d",&n) zu scanf("%d",&n) ändern. Hier ist %d der Platzhalter für Integer-Variablen. Ähnlich druckt das Ampersand & in der endgültigen Druckanweisung die Adresse und nicht den Wert. Entfernen Sie daher & in der endgültigen printf-Anweisung

+0

Detail, mit' scanf() ',' "% d" 'braucht keine Übereinstimmung mit _integer Variable_, es braucht einen _pointer_, wie zum Beispiel' & n', was ein 'int *' ist. – chux