2016-11-30 55 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 &