2016-11-30 44 views
0

後的程序關閉後,我進入第一輸入錯誤時運行C-程序首先輸入

#include<stdio.h> 
int main(void) 
{ 
    int biology,chemistry; 
    printf("\nEnter marks for maths"); 
    scanf("%d",biology); 
    printf("\nEnter marks for tech1"); 
    scanf("%d",chemistry); 
    return(0); 
} 
+2

用途及生物學與化學 – Fredrik

+2

幾乎任何[初學者書(http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)會告訴你你需要知道什麼。請找到並閱讀一個。 –

回答

1

您傳遞不正確的參數,以scanf()的調用。您必須通過變量的地址(請參閱scanf()的文檔)以匹配%d格式。

scanf("%d", &biology); 
... 
scanf("%d", &chemistry); 

您還應該檢查返回碼,看看scanf()調用是否成功。

5

C函數參數始終爲「按值傳遞」,這意味着函數scanf只能看到您指定爲參數表達式的任何當前值的副本。

如果您通過biology,那麼它只會看到未初始化的值。另一方面&biology是一個指針變量的指針值,即scanf可以用這個來修改biology

scanf將需要進行如下修改

scanf("%d", &biology); 
scanf("%d", &chemistry); 

要理解這一點,詳細閱讀Why does scanf require &