第1页共18页四川省普通高等学校计算机应用知识和能力第二十三次等级考试二级(C与C++语言)笔试试卷时间:2005年10月15日上午9:00—11:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)1.数据在计算机内在中的表示是指数据的存储结构。(1)2.能影响中断响应次序的技术是中断优先级和中断屏蔽。(2)3.链表可以随机访问任意一个结点,而顺序表则不能。(3)4.作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。(4)5.Windows、OS/2、Linux微机操作系统都是多用户多任务操作系统。(5)6.数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。(6)7.流式文件和记录式文件都以字符为基本单位进行存取。(7)8.不定长文件是指字段的长度不固定。(8)9.软件工程的三要素包括方法、工具和环境。(9)10.软件结构是以指令为基础而组成的一种控制层次结构。(10)二、选择题(每小题1分,共5分)1.若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能出栈的序列是(11)11(A)1,4,3,2(B)2,3,4,1(C)3,1,4,2(D)3,4,2,12.任何两个并发进程之间(12)12(A)一定存在互斥关系(B)一定存在同步关系(C)一定彼此独立无关(D)可能存在同步或互斥关系3.以下哪个特征不是分时操作系统的主要特征(13)13(A)中断管理(B)独立性(C)交互性(D)多路性4.以下的准则中哪个不是面向对象软件设计应遵循的(14)14(A)抽象准则(B)独立性准则(C)信息屏蔽准则(D)模块化准则5.需求分析中开发人员主要从用户那里了解(15)15(A)软件做什么(B)软件的结构(C)输入的信息(D)软件的测试第2页共18页第二部分C与C++语言程序设计(共85分)一、单项选择题(每小题1分,共10分)1.若变量已定义并赋值,下列符合C语法的表达式是(16)16(A)a:=b+1(B)a=b=c+2(C)int18.5%3(D)a=a+7=c+b2.以下程序输出的结果是(17)voidmain(){chara[]=HelloChina;s[5]=0;puts(s);}17(A)Hello(B)China(C)HelloChina(D)O3.有以下程序#includemalloc.hvoidmain(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf(%s%s,p,q);printf(%s,%s\n,p,q);}若输入abcdef回车,则输出为(18)。18(A)def,def(B)abc,def(C)abc,d(D)d,d4.下列函数形式正确的是(19)。19(A)doublefun(intx,inty)(B)fun(intx,y){z=x+y;{intz;returnz;}returnz;}(C)fun(x,y)(D)doublefun(intx,inty){intx,y;{doublez;doublez=x+y;z=x+y;returnz;}returnz;}5.下列有关类和对象的说法不正确的是(20)。20(A)对象是类的一个实例(B)一个类只能有一个对象(C)任何一个对象只能属于一个具体的类(D)类与对象的关系和数据类型与变量的关系相似6.派生类的对象对它的基类成员中(21)是可以访问的。21(A)公有继承的公有成员(B)公有继承的私有成员(C)保护继承的公有成员(D)私有继承的公有成员7.已知学生的结构体描述如下:structstudents{intno;第3页共18页charname[10];charsex;struct{intday;intmonth;intyear;}birth;intscore;};用学生结构体定义了变量w:structstudentsw;设变量w中的生日是1982年5月29日,下列对生日的正确赋值方法是(22)。22(A)day=29;(B)w.day=29month=5;w.month=5;year=1982;w.year=1982;(C)w.birth.day=29;(D)birth.day=29;w.birth.month=5;birth.month=5;w.birth.year=1982;birth.year=1982;8.假定p1和p2是已赋值的int型指针,则下面有关运算中,(23)是非法的。23(A)(p1+=4)=p2(B)p2=10-p1;(C)if(p1!=p2)printf(!=);(D)p1+=(p2-p1);9.关于C/C++语言,以下叙述正确的是(24)。24(A)C是面向过程的程序设计语言,C++不支持面向过程的程序设计(B)C语言支持图形设计,C++不支持(C)C程序由函数组成,而C++程序由类组成(D)C是C++的子集10.设有以下语句:charx=3,y=6,z;z=x^y2;则z的值是(25)。25(A)00010100(B)00011100(C)00011011(D)00011000二、读程序回答问题(每个选择3分,共45分)1.下列程序运行的结果为(26)。#includestdio.hvoidmain(){inta=2,b=-1,c=2;if(ab)if(bc)c=0;elsec+=1;printf(%d,c);}第4页共18页26(A)3(B)2(C)1(D)02.下列程序运行的结果为(27)。#includestdio.hvoidmain(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(%d,m);}27(A)1(B)2(C)3(D)43.以下程序运行后,文件test中的内容为(28)。#includestdio.h#includestring.hvoidfun(char*fname,char*st){FILE*fp;inti;fp=fopen(fname,w);for(i=0;istrlen(st);i++)fputc(st[i],fp);fclose(fp);}voidmain(){fun(test,world);fun(test,hello);}28(A)world(B)worldhello(C)helloworld(D)hello4.读下列程序:#includeiostream.hvoidmain(){unionvalue{charch;intn;第5页共18页doublef;}Data;coutsizeof(Data)=sizeof(Data)endl;Data.ch='a';coutData.chendl;Data.n=100;coutData.hendl;Data.f=78.168;coutData.fendl;}①value是(29)。29(A)共用体变量名(B)共用体名(C)结构体变量名(D)结构体名②程序的运行结果是(30)。30(A)sizeof(Data)=13(B)sizeof(Data)=8aa10010078.16878.168(C)13(D)8aa10010078.16878.1685.读下列程序:#includeiostream.hvoidmain(){staticcharstr[50]=485057ehk105101,*p=str;intsum1=0,sum2=0;while(*p!='\0'){if(*p=48&&*p=57)sum1++;elseif(*p=101&&*p=107)sum2++;else;p++;}coutsum1','sum2endl;}①程序的运行结果是(31)。31(A)3,2(B)2,3(C)3,12(D)12,3②while(*p!='\0')与(32)功能相同。32(A)while(*p!=0)(B)while(*p=0)(C)while(*p'\0')(D)while(*p!0)第6页共18页6.读下列程序:#includestdio.h#includestring.hvoidfun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1s2){t=*s1++;*s1=*s2--;*s2=t;}}voidmain(){char*p;p=1234567;fun(p,strlen(p));puts(p);}①输出结果是(33)。33(A)7654321(B)1711717(C)1714171(D)1234567②若把程序中的语句:while(s1s2){t=*s1++;*s1=*s2--;*s2=t;}改写成:while(s1s2){t=*s1;*s1=*s2;*s2=t;s1++;s2++;},则输出结果是(34)。34(A)7654321(B)1711717(C)1714171(D)12345677.下列程序运行结果是(35)。#defineX5#defineYX+1#defineZY*X/2voidmain(){inta;a=Y;printf(%d,Z);printf(%d\n,--a);}35(A)76(B)126(C)125(D)758.读下列程序:#includestdio.hintx;voidsub(int*s,intx){staticintt=0;x+=s[t];t++;}voidmain()第7页共18页{inta[]={3,8,4,2},i;intx=0;for(i=0;i4;i++){sub(a,x);printf(%3d,x);}}①程序的执行结果是(36)。36(A)3842(B)3111517(C)0000(C)2483②若把程序第二行的语句intx;删除,运行结果是(37)。37(A)3842(B)3111517(C)0000(C)24839.读下列程序分析运行结果#includestdio.hchar*cat(char*str1,char*str2){char*pt;for(pt=str1;*pt!='\0';pt++);while(*str2!='\0')*pt++=*str2++;return(pt);}voidmain(){char*p,s1[30]=210,s2[30]=45;p=cat(s1,s2);printf(%d\n,p-s1);p=cat(s1,s2);printf(%d\n,p-s1);}①主函数中,执行第一个输出函数后的结果为(38)。38(A)5(B)6(C)7(D)8②主函数中,执行第二个输出函数后的结果为(39)。39(A)5(B)6(C)7(D)810.下列程序的运行结果是(40)。#includestdio.hvoidmain(){char*str[]={One,Two,Three,Four};char**ptr=str;inti;第8页共18页for(i=0;i3;i++)printf(%s,(ptr+1)[i]);}40(A)newohree(B)Two(C)TwoThreeFour(D)指针运算非法,无输出注意:①请把下面“程序填空”中各小题答案写在主观题答题纸上②每一个空只填一个语句或一个语句所缺的部分内容三、程序填空(每空2分,共30分)1.以下程序可把输入的十进制数以十六进制的形式输出。#includestdio.hvoidmain(){charb[17]=0123456789ABCDEF;intc[64],d,i=0,base=16;longn;scanf(%ld,&n);do{c[i]=①;i++;n=n/base;}while(n!