以下scanf函数调用语句中对结构体变量成员的不正确引用的是(

题目

以下scanf函数调用语句中对结构体变量成员的不正确引用的是()。  struct node{      char name[20];      int age;      int sex; }student[5],*p;  p=student; 

  • A、scanf(“%s”,student[0].name);
  • B、scanf(“%d”,&student[0].age);
  • C、scanf(“%d”,&(p->sex));
  • D、scanf(“%d”,p->age);
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若变量已正确定义并赋值,对库函数错误调用的是()

A.k=scanf("%d%d",&i,&j);

B.printf("\\%d\\n",k);

C.getchar(ch);

D.putchar(ch);


正确答案:C

第2题:

以下scanf函数调用语句中对结构体变量成员的引用不正确的是

struct pupil

{ char name[20];

int age

int sex;

} pup[5],*p;

p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C.scanf("%dT",&(p->sex));

D.scanf("%d",p->age);


正确答案:D
解析:考查结构体成员变量的引用方法。可用结构体变量名.数据成员名或者结构体指针->数据成员名两种方法来引用。 结构体类型的变量、数组和指针变量的定义。

第3题:

有以下结构体说明、变量定义和赋值语句

struct STD

{ char name[10];

int age;

char sex;

} s[5],*ps;

ps=&s[0];

则以下 scanf 函数调用语句中错误引用结构体变量成员的是

A)scanf("%s",s[0].name);

B)scanf("%d",&s[0].age);

C)scanf("%c",&(ps->sex));

D)scanf("%d",ps->age);


正确答案:D
答案 D
解析:在 scanf 函数中,第 2 个参数应该表示为地址变量,而选项 D 只是一个具体的值,而并不是一个地址值。

第4题:

已知int a,b;double c;,则以下语句中错误的函数调用是A.scanf("%d,%x,%lf",&a,&b,&c); B.scanf("%d,%d,%le",&a,&b,&c);C.scanf("%o,%x,%o",&a,&b,&c); D.scanf("%d,%o,%e",&a,&b,&c);


正确答案:C
本题主要考查格式输入函数scanf。此函数一般的输入形式是scanf(格式控制,地址表列);。函数“格式控制”的含义同printf函数,以%开始,以一个格式字符结束,中间可以插入附加的字符。常用的格式字符主要有:
d:用来输入有符号的十进制整数。
u:用来输入无符号的十进制整数。
o:用来输入无符号的八进制整数。
x:用来输入无符号的十六进制整数(大小写作用相同)。
c:用来输入单个字符,包括回车键。
s:用来输入字符串,将字符串送到一个字符数组中,在输入时以非空格字符开始,以第一个空格字符结束。字符串以串结束标志’\0’作为其最后一个字符。
f:用来以小数形式输入实数(包括浮点型和双精度型)。
e:用来以指数形式输入实数。
scanf的附加格式说明字符:
L、l:用于输入长整型数据(可用%ld,%lo,%lx)及double型数据(用%lf)。
h:用于输入短整型数据(可用%hd,%ho,%hx)。
域宽:指定输入数据所占宽度(列数),域宽应为正整数。
*:%后的“*”附加说明符用来表示跳过它相应的数据。
在本题中,由于变量a和b是整型变量,而c是双精度类型。很显然,选项C中的描述不正确,它用%o输出实数。

第5题:

已知inta,b;doublec;则以下语句中错误的函数调用是 A.scanf("%d,%x,%lf",&a,&am

已知int a,b;double c;则以下语句中错误的函数调用是

A.scanf("%d,%x,%lf",&a,&b,&c);

B.scanf("%d,%d,%le",&a,&b,&c);

C.scanf("%o,%x,%o",&a,&b);

D.scanf("%d,%o,%e",&a,&b,&c);


正确答案:D

第6题:

有以下结构体说明、变量定义和赋值语句 struct STD { char name[10]; int age; char sex; }s[5],*ps; ps=&s[0]; 则以下scanf函数调用语句中错误引用结构体变量成员的是______。

A.scanf("%s",s[0].name);

B.scanf("%d",&s[0].age);

C.scanf("%c",&(ps->sex));

D.scanf("%d",ps->age);


正确答案:D
解析:要给结构体成员输入数据,在scanf语句中需要使用结构体成员的地址。函数scanf是C语言的标准输入函数,其作用是在终端设备上输入数据,而且要求输入项必须是某个存储地址。选项A中是引用结构体数组s的第0个元素s[0]的name成员,name是包含10个元素的数组,数组名就表示数组的地址,也就代表s[0].name的地址,所以选项A是正确的。选项B显然也是正确的,选项C是先用指针变量引用结构体的成员sex后取它的地址,也是正确的。选项D用指针变量引用结构体的成员sex后没有再继续取其地址,所以是错误的。

第7题:

有以下结构体说明,变量定义和赋值语句: struct STD {char name[10]; int age; char ***; }s[5],*ps; ps=&s[0]; 则以下scanf函数调用语句中错误的结构体变量成员是( )。

A.scanf("%s",s[0].name);

B.scanf("%d",&s[0].age);

C.scanf("%c",&(ps->***));

D.scanf("%d",ps->age);


正确答案:D

第8题:

已知:int x,y;double z;则以下语句中错误的函数调用是( )。A)scanf("%d,%1x,%1e",&x,&y,&z); B)scanf("%1d*%d&1f",&x,&y,&z);C)scanf("%x%*d%o",&x,&y); D)scanf("%x%o%6.2f",&x,&y,&z);


正确答案:B
B项的格式应该为scanf("%1d*%d%1f",&x,&y,&z);

第9题:

以下各项说法中,正确的是( )。

A.当通过引用传递参数时,函数创建一个变量以存储参数的值

B.当通过引用传递参数时,函数无法访问参数的值

C.当通过引用传递参数时,调用程序创建一个临时变量以容纳参数的值

D.当通过引用传递参数时,函数访问调用程序中参数的原始值


正确答案:D
解析:本题考核函数参数传递中的引用传递。先来理解引用的概念:①“引用”实际上是给一个已知变量起个别名,对引用的操作也就是对被它引用的变量的操作。②C++中的变量名对应着内存的存储位置,可以使用一个特定的内存地址访问到它,引用则引入变量的另一个名字,它和这个变量具有同一内存地址。③当通过引用传递参数时,只是把请求调用的程序中实参的引用传递给函数(实际上是实参的内存地址被传递了)。

第10题:

设x,y均是int类型变量,则以下不正确的函数调用为______。

A.getchar();

B.putchar('\108');

C.scanf("%d%*2d%d",&x,&y);

D.putchar('\'');


正确答案:B
解析:八进制中的基本数为0~7,不可能出现8。

更多相关问题