您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 全国计算机等级考试二级C语言指针测试题
全国计算机等级考试二级C语言指针测试题一、选择题(1)设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(2)若有定义:intx=0,*p=&x;,则语句printf(%d\n,*p);的输出结果是A)随机值B)0C)x的地址D)p的地址(3)以下定义语句中正确的是A)chara='A'b='B';B)floata=b=10.0;C)inta=10,*b=&a;D)float*a,b=&a;(4)有以下程序main(){inta=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,7B)7,8,7,8C)8,7,7,8D)7,8,8,7(5)设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A)scanf(“%d”,pa);B)scanf(“%d”,a);C)scanf(“%d”,&pa);D)scanf(“%d”,*pa);(6)设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A)p=1;B)*q=2;C)q=p;D)*p=5;(7)有以下程序以下是引用片段:voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1=’A’,c2=’a’,*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A)AbB)aaC)AaD)Bb(8)若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是A)int*i=NULL;B)float*f=NULL;scanf(&d,f);*f=10.5;C)chart=m,*c=&t;D)long*L;*c=&t;L=‘\0’;(9)有以下程序以下是引用片段:#inc1udemain(){printf(%d\n,NULL);}程序运行后的输出结果是A)0B)1C)-1D)NULL没定义,出错(10)已定义以下函数intfun(int*p){return*p:}该函数的返回值是A)不确定的值B)形参p中存放的值C)形参p所指存储单元中的值D)形参p的地址值(11)下列函数定义中,会出现编译错误的是A)max(intx,inty,int*z)B)intmax(intx,y){*z=xy?x:y;}intz;z=xy?x:y;returnz;}C)max(intx,inty)D)intmax(intx,inty){intz;{return(xy?x:y);}z=xy?x:y;return(z);}(12)有以下程序段以下是引用片段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在执行了c=&b:b=&a;语句后,表达式:**c的值是A)变量a的地址B)变量b中的值C)变量a中的值D)变量b的地址(13)有以下程序以下是引用片段:main(){chara,b,c,*d;a=’\’;b=‘\0xbc’;c=‘\xab’;d=\0127;printf(%c%c%c%c\n,a,b,c,*d);}编译时出现错误,以下叙述中正确的是A)程序中只有a=’\’;语句不正确B)b=‘\0xbc’;语句不正确C)d=\0127;语句不正确D)a=’\’;和c=‘\0xab’;语句都不正确(14)若有以下定义和语句以下是引用片段:#includeinta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是A)*q=0;B)w=p;C)*p=a;D)*p=*w;(15)有以下程序以下是引用片段:int*f(int*x,int*y){if(*x*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r);}执行后输出结果是A)7,8,8B)7,8,7C)8,7,7D)8,7,8(16)若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是A)p=q;B)*p=*q;C)n=*q;D)p=n;(17)有以下程序以下是引用片段:voidfun(char*c,intd){*c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){chara=’A’,b=’a’;fun(&b,a);printf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,aB)a,B,a,BC)A,b,A,bD)b,B,A,b(18)若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A)scanf(%d%d%d,&a,&b,d);B)scanf(%d%d%d,&a,&b,&d);C)scanf(%d%d%d,a,b,d);D)scanf(%d%d%d,a,b,*d);(19)若定义:inta=511,*b=&a;,则printf(%d\n,*b);的输出结果为A)无确定值B)a的地址C)512D)511(20)若有说明:inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是A)i=*p;B)p*=*&j;C)i=&j;D)i=**p;(21)下列程序段的输出结果是A)2143B)1212C)1234D)2112以下是引用片段:voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}(22)下列程序的运行结果是A)63B)36C)编译出错D)00以下是引用片段:voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf(“%d%d”,a,b);}(23)有如下程序段int*p,a=10,b=1p=&a;a=*p+b;执行该程序段后,a的值为A)12B)11C)10D)编译出错(24)有以下函数charfun(char*p){returnp;}该函数的返回值是A)无确切的值B)形参p中存放的地址值B)一个临时存储单元的地址D)形参p自身的地址值(25)请选出正确的程序段A)int*p;B)int*s,k;scanf(%d,p);*s=100;……C)int*s,k;D)int*s,k;char*p,c;char*p,e;s=&k;s=&k;p=&c;p=&c;*p='a';s=p;…*s=1;…(26)若有以下定义和语句:doubler=99,*p=&r;*p=r;则以下正确的叙述是A)以下两处的*p含义相同,都说明给指针变量p赋值B)在doubler=99,*p=&r;中,把r的地址赋值给了p所指的存储单元C)语句*p=r;把变量r的值赋给指针变量pD)语句*p=r;取变量r的值放回r中(27)以下程序运行后,a的值是A)4B)1C)0D)运行时出错,a无定值以下是引用片段:main(){inta,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf(%d\n,a);}(28)有以下程序以下是引用片段:intfun(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta,b,c,d;a=30;b=50;fun(a,b,&c,&d);printf(%d,%d\n,c,d);}输出结果是A)50,30B)30,J50C)80,-20D)80,20(29)若有定义和语句:int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf(%d\n,*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(30)以下程序的输出结果是以下是引用片段:#includesubl(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}{chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A)BABBABB)ABBBBAC)BABABAD)BAABBA(31)若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是A)I=*P;B)*P=*&J;C)i=&j;D)i=**p;(32)要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是A)funa(int*x,int*y)B)funb(intx,inty){int*p;{intt;*p=*x;*x=*y;*y=*p;}t=x;x=y;y=t;}C)func(int*x,int*y)D)fund(intx,inty){*x=*y;*y=*x;}{*x=*x+*y;*y=*x-*y;*x=*x-*y;}二、填空题:(1)有以下程序以下是引用片段:voidf(inty,int*x){y=y+*x;*x=*x+y;}main(){intx=2,y=4;f(y,&x);printf(“%d%d\n”,x,y);}执行后输出的结果是【1】。(2)下面程序的运行结果是:[2]。以下是引用片段:voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){intx=3,y=5,*p=&x,*q=&y;swap(p,q);printf(“%d%d\n”,*p,*q);}(3)设有以下程序:以下是引用片段:main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=pl==&m;b=(*p1)/(*p2)+7;printf(“a=%d\n”,a);printf(“b=%d\n”,b);}执行该程序后,a的值为【3】,b的值为【4】。(4)下列程序的输出结果是【5】。以下是引用片段:voidfun(int*n){while((*n)--);printf(“%d”,++(*n));}main(){inta=100;fun(&a);}(5)以下函数用来求出两整数之和,并通过形参将结果传回,请填空。以下是引用片段:voidfunc(intx,inty,[6]z){*z=x+y;}(6)函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。以下是引用片段:voidfun(float*sn,intn){floats=0.0,w,f=-1.0;inti=0;for(i=0;i=n;i++){f=[7]*f;w=f/(2*i+1);s+=w;}[8]=s;}(7)以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。以下是引用片段:exchange(int*x,int*y){intt;t=*y;*y=【9】;*x=【10】;}(8)下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。intadd(intx,inty,【11】z){【12】=x+y;}答案:一、选择题01)A02)B03)C04)C05)A06)D07)A08)D09)A10)C11)B12)C13)D14)A15
本文标题:全国计算机等级考试二级C语言指针测试题
链接地址:https://www.777doc.com/doc-6964467 .html