国家二级C语言(指针)机试模拟试卷1.pdfVIP

  • 0
  • 0
  • 约2.85万字
  • 约 18页
  • 2026-01-22 发布于河北
  • 举报

国家二级C语言(指针)机试模拟试卷1.pdf

家二级C语言(指针)机试模拟试卷

第1套

一、选择题(本题共26题,每题1.0分,共26分。)

1、有以下程序:#includcstdio.hvoidf(int*p,int*q);main()

{intm=l,n=2,*r=m;f(r,n);prinlf(%d,%d,m,n);)

voidf(int*p,int*q)(p=p+l;*q=*q+l:)程序的运行结果是()。

A、2,3

B、I,3

C、1,4

D、1,2

标准答案:B

知识点解析:在f(int*p,int*q)函数中,执行“p=p+l;”是将p所对应的地址加1,

而“*q=*q+l;”是将q所指向n的地址所对应的值加1,所以m的值没有变,而n

的值则变为3。故本题答案为B选项。

2、若有定义语句“doublea,*p=a;,下列叙述口错误的是()。

A、定义语句中的*号是一个间址运算符

B、定义语句中的*号是一个说明符

C、定义语句中的p只能存放double类型变量的地址

D、定义语句中,乐p=a把变量a的地址作为初值赋给指针变量p

标准答案:A

知识点解析:变量定义语句气oublea,*p=a;中,“*”是一个指针运算符,而非

间址运算符。故本题答案为A选项。

3、若有定义语句doublex,y,*px,*py;,执行了px=x;py=y;之后,正确

的输入语句是()。

,

A、scanf(%lf%le\px,py);

B、scanf(%f%r,x,y);

C、scanf(%f%f,x,y);

D、scanf(%lf%lF,x,y);

标准答案:A

知识点解析:因为x和y都是double型数据,输入时的格式控制字符应为%1。所

以B、C选项错误。D选项中的“scanf(%lf%l/,x,y);”应为scanf(%lf%l『,

x,y);”,所以D选项错误。故本题答案为A选项。

4、若有定义语句“inta⑵[3],*p[3];”,则以下语句中正确的是()。

A^p=a;

B、p[O]=a;

C、p|0J=a|l||2];

D、p[l]=a;

标准答案:C

知识点解析:A选项错误,因为p是指向一个指针数组,而数组名相当于常量,不

能重新赋值。B选项错误,因为p[0]是一个in【指针,也就是int*,而a是一个指向

指针的指针im**。C选项正确,因为p[0]是int*,是int,a[l][2]fiint*,

类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,p[l]是inl

*,a是int***,类型不吻合。故本题答案为C选项。

5、下列函数的功能是voidfn(char*a,char*b){while((*b=*a)!=’\O)

{a++;b++;}}

A、将a所指字符串赋给b所指空间

B、使指针b指向a所指字符串

C、将a所指字符串和b所指字符串进行比较

D、检查a和b所指字符串中是否有

标准答案:A

知识点解析:题目的fn函数内,while循环条件为“(*b=*a)!=”\O?执行时先把

指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识

0”,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环

条件,如果成立,继续也指针a所指向的字符赋给指针b所在的内存单元,直到遇

到结束标识为止。故本题答案为A选项。

6、若有定义intw⑶[5];,则以下不能正确表示该数组元素的表达式是()。

文档评论(0)

1亿VIP精品文档

相关文档