四川省普通高等学校计算机应用知识和能力第三十四次等级考试二级(C与C++语言)笔试试卷时间:2011年4月16日上午9:00—11:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)1.作业与进程的主要区别是前者由用户提交,后者是由系统自动生成。(1)2.从循环链表中任意一个结点出发不能访问到整个链表。(2)3.如果分时操作系统的时间片一定,那么用户数越少,则响应时间越长。(3)4.队列在操作系统的各种资源请求排队及数据缓冲区管理中广泛使用。(4)5.死锁产生的根本原因是操作系统能够提供的资源比请求该资源的进程数少。(5)6.虚拟设备技术能将独占设备转换为可共享的设备,提高资源利用率。(6)7.链栈与顺序栈相比,有一个明显的优点是通常不会出现栈满的情况。(7)8.软件维护是长期的过程,交付使用的软件仍然需要排错、修改和扩充。(8)9.黑盒测试要求测试人员根据程序内部逻辑结构设计或选择测试用例。(9)10.软件设计时,应力求增加模块间的耦合,减少模块的内聚。(10)二、选择题(每小题1分,共5分)1.设已将元素a1,a2,a3依次入栈,元素a4正等待进栈。那么下列4个序列中不可能出现的出栈序列是(11)。11(A)a3a1a4a2(B)a3a2a4a1(C)a3a4a2a1(D)a4a3a2a12.以下哪一个不是操作系统的特征(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)触发时间第二部分C与C++语言程序设计(共85分)一、单项选择题(每小题1分,共10分)1.以下合法的字符常量是(16)。(考点:常量)16(A)“a”(B)‘\72’(C)‘\0x12’(D)‘ab’2.以下程序的结果是(17)。(考点:位运算)voidmain(){unsignedinta=3,b=10;printf(%d\n,a2|b1);}17(A)1(B)13(C)12(D)53.以下程序的输出结果是(18)。(考点:逻辑运算)voidmain(){inta=-1,b=4,k;k=(++a0)&&!(b--=0);printf(%d%d%d\n,k,a,b);}18(A)104(B)103(C)003(D)0044.以下程序运行后的输出结果是(19)。(考点:字符数组及字符串处理函数)#includestdio.hvoidmain(){charp[20]={'a','b','c','d'},q[]=abc,r[]=abcde;strcpy(p+strlen(q),r);strcat(p,q);printf(%d%d\n,sizeof(p),strlen(p));}19(A)209(B)99(C)2011(D)11115.下列对C语言字符数组的描述中错误的是(20)。(考点:字符数组)20(A)字符数组可以存放字符串(B)字符数组的字符串可以整体输入、输出(C)可以在程序中用赋值运算符“=”对字符数组进行整体赋值(D)不可以用关系运算符对字符数组中的字符串进行比较6.下述程序的输出结果是(21)。(考点:条件运算)#includestdio.hvoidmain(){inta[]={7,4,6,3,10};intm=10,k,*ptr=&a[0];for(k=0;k5;k++)m=*(ptr+k)m?*(ptr+k):m;printf(%d\n,m);}21(A)10(B)4(C)6(D)37.有如下程序员(考点:if~else嵌套)#includestdio.hvoidmain(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec++;printf(%d\n,c);该程序的输出结果是(22)22(A)0(B)1(C)2(D)38.根据下面的结构体类型及其结构数组的定义,值等于’A’的表达式是(23)(考点:结构体)structseason{charname[10];intday;};structseasons[4]={Spring,90,Summer,91,Autumn,92,Winter,92};23(A)s[3].name[0](B)s[3].name(C)s[2].name(D)s[2].name[0]9.运行以下程序的输出结果为(24)。(考点:宏定义)#defineR1+2#defineS(r)r*r#defineV(r)S(r)*R#includestdio.hvoidmain(){intr1=1+2;printf(%d,V(r1));}24(A)27(B)11(C)9(D)710.以下不能对二维数组a进行正确初始化的语句是(25)。(考点:二维数组赋初值)25(A)inta[2][3]={{1,2},{3,4},{5,6}};(B)inta[][3]={{1,2},{0}};(C)inta[2][3]={0};(D)inta[][3]={1,2,3,4,5,6}二、读程序回答问题(每个选择3分,共45分)1.读下面的程序并回答问题。(考点:switch语句嵌套)#includestdio.hvoidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf(%d%d\n,a,b);}(1)程序的运行结果是(26)。26(A)2,1(B)1,2(C)1,1(D)0,0(2)将程序中的switch(x)更改为switch(x!=1),其程序运行结果是(27)。27(A)2,1(B)1,2(C)1,1(D)0,02.读下面程序并回答问题。(考点:字符指针数组、选择排序算法)#includestdio.h#includestring.hvoidabc(char*name[],intlen){char*temp;inti,j,k;for(i=0;ilen-1;i++){k=i;for(j=i+1;jlen;j++)if(strcmp(name[k],name[j])0)k=j;if(i!=k){temp=name[i];name[i]=name[k];name[k]=temp;}}}voidmain(){staticchar*name[]={turboc,fortran,basic,forbase,java};inti,n=5;abc(name,n);for(i=0;i5;i++)printf(%c,*name[i]);printf(\n);}(1)函数abc()的功能是(28)。28(A)按字符排序(B)按字符串排序(C)交换字符串(D)字符串倒序(2)程序输出结果是(29)。29(A)tfbfj(B)turbo(C)bffjt(D)java3.读下面的程序并回答问题。(考点:静态存储类型)#includestdio.hintfunc(intx){inty=0;staticintz=3;x=z++,y++;return(x);}voidmain(){inta=2,i,b;for(i=0;i2;i++)b=func(a++);printf(%d\n,b);}程序运行的结果是(30)。30(A)2(B)3(C)4(D)54.读下面程序并回答问题。(考点:递归函数、全局变量)#includestdio.hinttemp;voidmain(){intfun(intn);intnum,sum;num=5684;temp=num;sum=fun(num);printf(=%d\n,sum);}intfun(intn){intremind;staticintsum=0;if(n=10)fun(n/10);remind=n%10;sum+=remind;if(tempn)printf(%d+,remind);elseprintf(%d,remind);returnsum;}(1)程序中的fun函数被调用次数为(31)。31(A)2(B)3(C)4(D)5(2)程序的输出结果为(32)。32(A)5+6+8+4=23(B)5+6+8+4+=23(C)4+8+6+5+=23(D)4+8+6+5=235.读下面程序并回答问题。(考点:文件)#includestdio.hcharx[4][8]={First,Second,Third,Four};inta[4]={6,7,6,5};voidmain(){inti;chary[4][8];FILE*fp;fp=fopen(TEST.txt,w);for(i=0;i4;i++)fputs(x[i],fp);fclose(fp);fp=fopen(TEST.txt,r);for(i=0;i4;i++)fgets(y[i],a[i],fp);fclose(fp);for(i=0;i4;i++)printf(%s\n,*(y+i));}(1)程序的运行结果是(33)。33(A)First(B)First(C)“First”(D)FourSecodnFirst“Second”ThirdThirdFirst“Third”SecondFourFirst“Four”First(2)以下哪种说法正确(34)。34(A)TEST.txt仅在程序运行期间存在,程序结束后就没有了(B)TEST.txt文件必须在程序运行之前建立好(C)如果TEST.txt文件不存在,程序运行中会自动建立TEST.txt文件(D)TEST.txt始终是无内容的空文件6.读下面程序,回答问题。(考点:字符数组、归类计数算法)#includestdio.hvoidmain(){chars[50]=de123116abc5656;inti,b[10]={0},cnt=0;for(i=0;s[i]!='\0;i++){if(s[i]='0'&&s[i]='9')b[s[i]-'0']++;elsecnt++;}printf(%d\n,cnt);for(i=0;i10;i++)printf(%d,b[i]);}(1)main函数中第一个printf输出cnt的值为(35)35(A)15(B)5(C)9(D)16(2)main函数中循环输出数组b的值为(36)36(A)3110220000(B)9000000000(C)0000000009(D)03110230007.读下面程序,回答问题。(考点:指针参数、递归函数)#includestdio.hintfun(int*a,intn){if(n1)return*a+fun(a+1,n-1);elsereturn*a;}voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},s;s=fun(a+3,3);printf(%d\n,s);}①函数fun与下面非递归程序等价的是(37)。37(A)intfun(int*a,intn)(B)intfun(int*a,intn){inti,s=0;{inti,s=0;for(i=0;in;i++)for(i=0;in;i++)s=s+a[i];s=s+*a;returns;returns;}}(C)intfun(int*a,intn)(D)intfun(int*a,intn){inti,s=0;{inti,s=0;for(i=0;in;i++)for(i=0;in;i++)s=a[i];s=s+a[n