- 0
- 0
- 约2.85万字
- 约 18页
- 2026-01-22 发布于河北
- 举报
家二级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)