2017-05-03 111 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); 

} 

當我運行這個程序中的代碼塊,它要求我只進入蛋糕的總公斤,當我進入它,點擊進入,程序只是打印一切在下面的printf函數而不是要求我輸入朋友的數量。C程序輸出錯誤

+1

'scanf(「%d」,&n)'。我想知道編譯器如何忽略它。 –

+1

這不是我第一次看到'&d'而不是'%d'的問題。 –

+1

@RohanKumar:'printf(他必須向他的每個%d朋友分發%f kg蛋糕「,&蛋糕,&m);'它甚至沒有編譯(開始時缺少報價) –

回答

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

scanf("&d", &m); 

您需要將其更改爲

scanf("%d", &n); 

scanf("%d", &m); 

此外,在printf函數,你不應該傳遞的變量

1

地址有在你的代碼的幾個問題。首先你scanf()應該是這樣的:

scanf("%d", &var); 

下一頁關閉在你printf聲明。在var部分,你做了&cake&m,這是錯誤的,因爲你要打印變量的地址。要解決該問題,請刪除&

4

「& d」保存特定變量的地址。因此,您需要將 scanf("&d",&m)更改爲scanf("%d",&m)scanf("&d",&n)scanf("%d",&n)。這裏%d是整型變量的佔位符。 類似地,在最後的打印語句中,&符號&打印的地址不是該值,因此在最終的printf語句中刪除&

+0

詳細信息,帶'scanf ()',''%d「'不需要匹配_integer變量_,它需要一個_pointer_,比如'&n',它是一個'int *'。 – chux