高级语言程序设计练习题5及答案.docx
一、单选题1、关于如下结构体说法正确的是structnodeintid;structnodenext;;A.node为数据类型B.next指向下一个结构体变量C.struct可以省略D.此结构体定义存在错误正确答案:D2、关于如下结构体structnodeintid;structnode*ne×t;;说法不正确的是A.结构体标识符node可以省略B.structnode为数据类型C.next指向下一个结构体变量D.structnode可以用于定义链表正确答案:A3、对于如下结构体定义structnodeintid;structnode*ne×t;)a;若声明如下变量structnode*p;在32位系统中,不能实现创建链表节点的操作是A.p=(structnode*)malloc(8);B. p=(node*)malloc(sizeof(node);C. p=(structnode*)malloc(sizeof(structnode);D.p=(structnode*)malloc(sizeof(a);正确答案:B4、对于如下语句structnodeintid;structnode*ne×t;)*P;p=(structnode*)malloc(sizeof(structnode)*10);如下说法正确的是A.*p.id=10实现给首节点的id成员赋值B.(*p).id=10实现给首节点的id成员赋值C.p=>id=10实现给首节点的id成员赋值D.p.id=10实现给首节点的id成员赋值正确答案:B5、对于如下结构体定义structnodeintid;structnode*ne×t;;假设list存储链表首地址,p当前的链表的某节点,q为p前一个节点,也就是说q->ne×t=p如下说法正确的是A.表达式p->next=q->ne×t,free(p)实现删除节点PB.表达式q->next=p->next,free(p)实现删除节点PC.表达式q->next=p->next实现删除节点PD.表达式p->ne×t=q->ne×t实现删除节点P正确答案:B6、设有以下语句typedefstructintn;charch8;MYTYPE;则下面叙述中正确的是A.MYTYPE是结构体类型名B.typedefstruct是结构体类型C.MYTYPE是结构体变量名D.struct是结构体类型名正确答案:A7、对于如下语句typedefstructmytype(intn;charch8;*MYTYPE;如下说法正确的是A.MYTYPE是StrUCtmytyPe类型别名B.MYTYPE是StrUCtmytype*类型别名C.MYTYPE结构体指针变量名D.MYTYPE结构体变量名正确答案:B8、对于如下结构体structpointfloatx,y;;声明如下变量structpointpl=l,2zp2=3z4,s,*p;如下说法正确的是?A.表达式(P=&pl,*p=p2)结果为3,4B.表达式s=p2+l结果为4,5C表达式(P=pl,s=*p)结果为1,2D.表达式s=pl+p2的结果为4,6正确答案:A9、对于如下结构体structpointfloatx,y;;如下语句执行后输出结果为structpointpl=l,22=3z4,*t,*q;t=(structpoint*)malloc(sizeof(structpoint);memcpy(t,&pl,sizeof(structpoint);memcpy从源内存地址&pl的起始位置开始拷贝若干个字节到目标内存地址t中printf("%.Of"zt->x);A.存在语法错误B.0C.2D.l正确答案:D10、结构体structnode(intid;structnode*next;;定义了链表list假设P为其中一个节点;如果在P后插入节点w,如下操作正确的是A.t=w,w=p,p=t;B.p->next=wzw->next=p->next;C.w->next=p->next,p->ne×t=w;D.t=p->next;p->next=w;正确答案:C11、对于如下程序intmain()printf("%d",CT);returnO;)输出结果为A.lB.3C.2D.l+2正确答案:B12、对于如下程序#defineCT"1+2"intmain()(printf("%s",CT);return0;输出结果为B.lC.l+2D.2正确答案:C13、对于如下程序#defineCT2-1intmain()(printf("%d,zCT*CT);returnO;)输出结果为A.1B.-3C.-1D.存在语法错误正确答案:C14、对于如下程序#defineCT3>4#defineCECT?3:4intmain()printf("%d'CE);returnO;输出结果为A.0B.4C.lD.3正确答案:B15、对于如下程序#defineIFif(a<b)t=a;intmain()(inta=3zb=4,t=0;IFa=b;b=t;)printf("%d",a);return0;输出结果为A.3B.0C.存在语法错误D.4正确答案:D16、对于如下程序#defineSWAP(a,b)intt;t=a;a=b;b=t;intmain()(inta=3zb=4,t;t=SWAP(a,b);printf("%d",a);returnO;输出结果为A.3B.存在语法错误C.4正确答案:B17、对于如下程序#defineADD(a,b)a=a+bintmain()(inta=3,b=4,t=0;t=ADD(a,b);printf("%d",t);return0;A.3B.4C.7D.存在语法错误正确答案:C18、对于如下程序#defineMAXintmain()(inta=3zb=4,t=0;t=a;if(a<b)t=b;#endifprintf("%d",t);)输出结果为A.3B.0C.存在语法错误D.4正确答案:D19、对于如下程序intmain()(inta=3zb=4,t=0;#ifdefMAXt=a;if(a<b)t=b;#elset=a;if(a>b)t=b;#endifprintf("%d",t);输出结果为A.4B.0C.3D.存在语法错误正确答案:C20、如下说法不正确的是?A.宏被预处理为C语言语句后,再参与编译。B.使用宏会增加代码的规模C.宏支持参数,其参数传递机制与函数的参数传递机制一致,均遵循值拷贝机制D.使用宏比调用函数的运行效率高正确答案:C