全国计算机等级考试二级C语言指针测试题
一、选择题
(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是
A)*p=*q;
B)p=q;
C)*p=&n1;
D)p=*q;
(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是
A)随机值
B)0
C)x的地址
D)p的地址
(3) 以下定义语句中正确的是
A) char a='A'b='B'; B) float a=b=10.0;
C) int a=10,*b=&a; D) float *a,b=&a;
(4) 有以下 HYPERLINK "/" \t "_blank" 程序
main()
{ int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p; p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是
A) 8,7,8,7
B) 7,8,7,8
C) 8,7,7,8
D) 7,8,8,7
(5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A) scanf(“%d”,pa) ;
B) scanf(“%d”,a) ;
C) scanf(“%d”,&pa) ;
D) scanf(“%d”,*pa) ;
(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
A) p=1;
B) *q=2;
C) q=p;
D) *p=5;
(7) 有以下 HYPERLINK "/" \t "_blank" 程序
以下是引用片段: void?fun(char?*a,?char?*b) {?a=b;?(*a)++;?} main?() {?char?c1=’A’,?c2=’a’,?*p1,?*p2; p1=&c1;?p2=&c2;?fun(p1,p2); printf(“%c%c\n”,c1,c2); }
程序运行后的输出结果是
A) Ab
B) aa
C) Aa
D) Bb
(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是
A) int? *i=NULL;???????????????? ?B) float? *f=NULL; scanf("&d",f);????????????????? *f=10.5; C) char? t="m", *c=&t;?????? D) long?? *L; *c=&t;????????????????????????? L=‘\0’;
(9) 有以下程序
以下是引用片段: #inc1ude? main() {?printf("%d\n",?NULL);?}
程序运行后的输出结果是
A) 0
B) 1
C) -1
D) NULL没定义,出错
(10) 已定义以下函数
int fun (int *p)
{ return *p: }
该函数的返回值是
A) 不确定的值
B) 形参p中存放的值
C) 形参p所指存储单元中的值
D) 形参p的地址值
(11) 下列函数定义中,会出现编译错误的是
A) max(int? x, int? y,int? *z)? ? B) int? max(int?? x,y) { *z=x>y? ? x:y;? }???????? ??? int? z ; z=x>y? ? x:y; return? z ; }? C) max (int? x,int? y)????????? D) int? max(int? x,int? y) {? int?? z;???????????????????? {?? return(x>y?x:y) ; } z=x>y?x:y;? return(z); }
(12) 有以下 HYPERLINK "/" \t "_blank" 程序段
以下是引用片段: main() {?int?a=5,?*b,?**c; c=&b;?b=&a; …… }
程序在执行了c=&b:b=&a;语句后,表达式:**c的值是
A) 变量a的