以下程序中调用scanf函数给变量a输入数值的方法是错误的 其错误原因是()。 main() { int *p *q a

大学网课 已帮助 人

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。 main() { int *p,*q, a,b; p =&a; printf ("input a:"); scanf ("%d", *p); … }

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

以下程序中调用scanf函数给变量a输入数值的方法是错误的 其错误原因是()。 main() { int *p *q  a

热搜:晶格常数为a的一维晶格中,电子的波函数为

回答

共1条回复

  • B 在本题中,题目告诉我们程序中调用scanf函数给变量a输入数值的方法是错误的,要求我们找出其错误的原因,这是一类错误原因分析题。 在本题程序中,首先定义两个整型指针变量p和q,然后定义两个整型变量a和b,让指针变量p执行变量a,接着输出提示语句“请输入a”,执行格式输入语句scanf,由于输入语句的输入列表中给出的应该是输入的地址,即存放输入数据的存储地址,但在本题的输入语句中给出的是*p,这表示一个数值,而非地址。因此,无法完成数据的输入,若要完成输入,可以将*p改为p。 根据上面的分析,我们可以知道本题程序出错的原因是*p表示的是变量a的值,而不是变量a的地址。因此本题正确答案选B。