高级语言程序设计练习题4及答案.docx
一、单选题1、设有如下一段程序:int*pza,b;a=10;p=&b;P=&a;a=*p+10;执行上面的程序后,a的值为A.不确定B.10C.20D.110正确答案:C2、设有如下一段程序:int*pza,b;a=10;P=&a;p=&b;a=*p+10;执行上面的程序后,a的值为A.不确定B.20C.10D.110正确答案:A3、设有如下一段程序:int*paz*pb,a=10zb=20;pa=&a,pb=&b;*pa=*pb;a=*pa+10;执行上面的程序后,a的值为A.不确定B.40C.20D.30正确答案:D4、设有如下一段程序:int*paz*pb,a=10zb=20;pb=&b;*pa=a;a=b;b=*pa;执行上面的程序后,a的值为A.10B.30C.程序出错D.20正确答案:C5、设有如下一段程序:int*paz*pb,a=10zb=20;pa=&a;*pa=a;a=b;b=*pa;执行上面的程序后,a的值为A.20B.程序出错C.30D.10正确答案:A6、如下指针变量声明语句正确的是?A.inta=10,b=20;int*pa,*pb=b;B.int*pa=8a,*pb=8bza=10,b=20;C.inta=10,b=20;int*pa,pb=b;D.inta=10zb=20,*pa=&az*pb=&b;正确答案:D7、执行以下程序后,y的值是voidmain()(inta=2A6z8z10;inty=l,x,*p;P=&al;for(x=0;x<3;x+)y+=*(p+x);printf(',%dn",y);)A.17B.18C.20D.19正确答案:B8、设有以下定义:inta43=lz2z3A5z6,79,10,l12;int*p=a;则下列能够正确表示数组元素al的表达式是A.*(P-1)B.*(p÷l)C*(*(P-D)D.*(*(p+l)+2)正确答案:A9、设有定义语句intx6=2A6,8z5J,*P=×,i;要求依次输出X数组6个元素中的值,不能完成此操作的语句是A.for(i=0;i<6;i+)printf("%2d"z(*p)+);B.for(i=0;i<6;i+)printf("%2d",*(p+i);C.for(i=0;i<6;i+)printf(',%2d"z*p+);D.for(i=0;i<6;i+)printf(',%2d,*(p+);正确答案:A10、下面程序输出数组中的最大值,由S指针指向该元素.voidmain。(inta10=6z7z2,9,l,10,5z8,4,3,*p,*s;for(p=a,s=a;p-a<10;p+)讦()s=P;printf("Max=%d",*s):则在if语句中的判断表达式应该是A.ap>asB.*p>*sC.p-a>p-sD.p>s正确答案:B11>设有定义:doublex100,*p=x;,以下能给数组X下标为6的元素读入数据的正确语句是A.scanf(',%lf",p6);B.scanf("%lf,×5);C.scanf("%lf",*(×+6);D.scanf("%lf'p+6);正确答案:D12、设有如下程序:#include<stdio.h>voidmain()(int*k,*j,i=100;j=&i;k=&j;printf("%dn",*k);)上面程序的输出结果是A.运行错误B.i的地址C.100DJ的地址正确答案:C13、请选出以下程序的输出结果#include<stdio.h>sub(intx,intyzint*z)*z=y-×main()(inta,bzc;sub(10,5,&a);SUb(7,a,&b);SUb(a,b,&c);Printf("%d,%d,%dn",a,b,c);A.-5,-12,-7B.5z2,3C.5,-2,-7D.-5,-12,-17正确答案:A14、设有如下函数定义:intf(char*s)(char*p=s;while(*p!='O')p+;return(p-s);如果在主程序中用下面的语句调用上述函数,则输出结果为printf(',%dn,(,ngoodbey!");A.10B.8C.11D.9正确答案:D15、设有如下定义:char*aa2="abcd","ABCD");则以下就法中正确的是A.aa数组的两个元素中各自存放了字符才和K的地址B. aa是指针变量,它指向含有两个数组元素的字符型一维数组C. aa数组成元素的值分别是“abed”和ABCD"D.aa数组的两个元素分别存放字符串常量的首地址正确答案:D16、下列程序的输出结果是main()(char*p2,str50="NE"charpl10="abcd"p2="ABCD"strcpy(str+2zstrcat(pl+2,p2+l);printf("%s,str);A.NEUabcdB.NEUbcdCNEcdBCDD.NEabcd正确答案:C17、以下程序段char*alp="ABC'7,DEF","GHI");intj;puts(alpl);的输出结果是()。A.ABCDEFB.DEFCABCD.GHI正确答案:B18、若已定义:inta43=1,2,3,4,5z6,7,8,9,10,11,12,(*prt)3=a,*p=a0;则能够正确表示数组元素al2的表达式是A.(*prt+l)+2B.*(*(p÷5)C. *(*(a+l)+2)D. *(*prt+1)2)正确答案:C19、以下程序的输出结果是voidfun(float*a,float*b)floatw;* a=*a+*a;w=*a;* a=*b;* b=w;main()floatx=2.0,y=3.0;float*px=&x,*py=&y;fun(px,py);printf(',%2.0f,%2.0",×,y);)A.4,3B.3,2C.2,3D.3z4正确答案:D20、下面程序char*funl(char*t,char*s)(while(*t+=*s+);return*t;)intmain()chara100=,(Hello"charb20="NE"funl(a,b);printf("%s',b);执行结果为A.HelloB.输出为空GHeIIoNEUD.NEU正确答案:D21、对于如下结构体定义structstudentintid;charname32;sl;如下说法不正确的是A.sizeof(sl)-sizeof(structStUdent)的值相等B.scanf("%s”,&sl.name)实现给name成员赋值CslJd=100实现给id成员变量赋值D.scanf("%s",sl.name)实现给name成员赋值正确答案:B22、对于如下结构体定义structstudentintid;charname32;sl,*p;若令P=&sl,则如下说法不正确的是A.scanf("%s”,p->name)实现给name成员赋值B.sl.id=100与p->id=100的功能相同,都是为Sl的id成员赋值100C.scanf("%s",p.name)实现给name成员赋值D.*p和Sl的值相同,P指向Sl正确答案:C23、对于如下结构体定义structstudentintid;charname32;sl=100,"zhao");如下说法正确的是A.表达式SiZeof(SLname)的值为4B.表达式Sizeof(Sl)的值为36C.存在语法错误D.表达式Strlen(SLname)的值为32正确答案:B24、对于如下结构体定义structstudentintid;charname32;unioncharc;intg;floatf;grade;sl=100z"zhao,A,如下说法正确的是A.表达式SiZeof(SLgrade)的值为4B.表达式SiZeof(SLgrade)的值为9C.sl.grade.g的值未知D.存在语法错误正确答案:A25、对于如下结构体定义structstudentintid;charname32;unioncharc;intg;floatf;grade;sl=100,zhao",A,如下说法不正确的是A.strlen(sl.name)的值为4B.sl.id的值为100C.sl.grade.g的值为0D.sl.grade.c的值为TV正确答案:C26、对于如下语句structpoint(floatxzy,z;pl=l,23,p2zp3;p2=pl;如下说法正确的是A.p2=pl+1是合法的表达式B.存在语法错误C.p3=pl+p2是合法的表达式D.print"%F),p2.x)的输出结果为1.000000正确答案:D27、下面程序structpoint(floatx,y,z;;structpointmid(structpointpl,structpointp2)structpointm;m.x=(pl.×+p2.x)2;m.y=(pl.y÷p2.y)2;m.z=(pl.z+p2.z)2;returnm;intmain()(structpointpl=l,2,3,p2zp3=0z0,0;p2=pl;p3=mid(pl,p2);printf(',%f",p3.x);)执行结果为A.1.000000B.存在语法错误,无结果C.0.500000D.0.000000正确答案:A28、下面程序structpoint(floatx,y,z;;voidswap(structpointplzstructpointp2)structpointm;m=pl,pl=p2zp2=m;)intmain()(structpointpl=l,2,3,p2=0,0,0;swap(plzp2);printf(',%f",p2.x);A.无结果B.0.500000C.1.000000D.0.000000正确答案:D29、下面程序structpoint(float×zy,z;;voidswap(structpoint*pstructpoint*p2)structpoint*m;m=plzpl=p2,p2=m;)intmain()(structpointpl=l,2,3,p2=0z0,0;swap(&pl,&p2);printf(',%f",p2.×);)执行结果为A.0.500000B.无结果C.0.000000D.1.000000正确答案:C30、下面程序structstudentintid;charname32;unioncharc;intg;floatf;grade;sl=100,"zhao",'A'intmain()(structstudentsl=20200001,"Joe,A,s2=20200001,"Li,z65;structstudentp;P=sl;printf("%s",p.name);)执行结果为AJoeB.无结果C.20200001D.Li正确答案:A31、下面程序structpoint(floatx,y,z;);intmain()(structpointpoints5=l,0,0;printf(',%f",pointsl.x);)执行结果为A.0.000000B.无结果C.值不确定D.1.000000正确答案:A32、下面程序structpoint(float×zy,z;;intmain()(structpointpoints5=l,0,0;printf(',%f",points->×);执行结果为A.1.000000B.无结果C.值不确定D.0.000000正确答案:A33、如下程序段enumdirectionleft,rightzupzdown;enumdirectiona=Ieft;printf(',%d"za);输出结果为A.lB.存在语法错误C.IeftD.0正确答案:D34、如下程序段enumdirectionleft=10,right,upzdown;enumdirectiona=Ieft;intd=left+right;printf(',%d"zd);输出结果为A.21B.0C.lD.20正确答案:A35、如下程序段enumdirectionleft=10,right,upzdown;typedefenumdirectionDirection;Directiond=up;printf(',%d"zd+);输出结果为A.12B.0C.lD.ll正确答案:A