四川省计算机二级考试第三十二次C与C++语言笔试试卷第1页共10页四川省普通高等学校计算机应用知识和能力第三十二次等级考试二级(C与C++语言)笔试试卷时间:2010年4月17日上午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.进程从运行状态进入就绪状态的原因可能是(11)。11(A)时间片用完(B)等待某一事件(C)等待的事件已发生(D)被选中占有处理机2.需求分析中开发人员主要从用户那里了解(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++语言笔试试卷第2页共10页第二部分C与C++语言程序设计(共85分)一、单项选择题(每小题1分,共10分)1.若x和y为double类型,则表达式x=1,y=x+3/2的值为(16)。(考点:数据类型、运算符)16(A)1(B)2(C)2.0(D)2.52.如果a,b,c,x,y均为int型变量,x=5,y=10,则执行下面语句后,a,b,c的值分别为(17)。a=(--y==x++)?--y:++x;(考点:数据类型、运算符)b=y++;c=x;17(A)a=7,b=9,c=7(B)a=7,b=9,c=6(C)z=6,b=9,c=7(D)z=6,b=9,c=63.执行下面语句段的输出结果是(18)。(考点:逻辑运算符)inti=1,j=1,k=2;if((j++||k++)&&i++)printf(%d,%d,%d\n,i,j,k);18(A)1,1,2(B)2,2,1(C)2,2,2(D)2,2,34.若要求表示“a不等于0”的关系,则不能正确表示这一关系的表达式为(19)。(考点:关系运算)19(A)a0(B)a(C)a0||a0(D)a!=05.若有说明inta,*p=&a;则scanf(%d,*p);语句不能正确为变量赋值的原因是(20)。(考点:指针)20(A)*p表示的是指针变量p的地址(B)*p表示的是变量a的值,而不是变量a的地址(C)*p表示的是指针变量p的值(D)*p只是用来说明p是一个指针变量6.若有如下说明,则能使指针变量p的值增加的表达式是(21)。(考点:结构体指针)structws{inta;int*b;}*p;21(A)++p-a(B)p-b++(C)p-a++(D)(p++)-a7.以下能对二维数组a进行正确初始化的是(22)。(考点:二维数组)22(A)inta[2][]={{1,0,1},{5,2,3}};(B)inta[][3]={{1,2,3},{4,5,6}};(C)inta[2][4]={{1,2,3},{4,5},{6}};(D)inta[][3]={{1,0,1},{},{1,1}};8.有以下结构体说明和变量定义:(考点:链表操作)structnode{intdata;Structnode*next;}*p,*q,*r;建立如图所示的链表结构,指针变量p、q分别指向如图所示的结点,指针变量r指向一新结点,则可以实现将r指向的结点插入到p、q所指结点之间的语句组是(23)。23(A)q=r;p-next=q-next;(B)p-next=r;r-next=p-next;r4NULL268pqhead……四川省计算机二级考试第三十二次C与C++语言笔试试卷第3页共10页(C)r-next=q;p-next=r;(D)p=r;r-next=q;9.以下程序的运行结果为(24)。(考点:宏定义)#definestdio.h#definePT3.5#defineS(x)PT*x*xvoidmain(){inta=1,b=2;printf(%4.1f\n,S(a+b));}24(A)14.0(B)31.5(C)7.5(D)10.510.下面程序段的运行结果为(25)。(考点:位运算)inta=9,b=020;printf(%o\n,~a&b1);25(A)40(B)41(C)42(D)43二、读程序回答问题(每个选择3分,共45分)1.有如下程序:(考点:字符数组、函数(地址参数))intcount(char*str,charsubstr[20]){inti,j,k,num=0;for(i=0;*(str+i)!='\0';i++){j=i;k=0;while(substr[k]==str[j]){k++;j++;}if(substr[k]=='\0')num++;}returnnum;}voidmain(){charstr[80],substr[20];gets(str);gets(substr);printf(%d\n,count(str,substr));}(1)若运行程序时输入abcdabad和ab两个字符串,则输出结果为(26)。26(A)3(B)4(C)2(D)11(2)该程序的功能是(27)。27(A)比较两个字符串str和substr的大小(B)统计子串substr在母串str中出现的次数(C)将子串substr复制到母串str中(D)统计两个字符串中字符的总个数2.有下列程序(考点:函数)#includestdio.hintfun(inta,intb)四川省计算机二级考试第三十二次C与C++语言笔试试卷第4页共10页{staticc=0;if(ab)c=c+a;elsec=c+b;returnc;}voidmain(){inta=2,b=5,c=6,d;d=fun(2*a,fun(b,c));printf(%d,d);}(1)fun(2*a,fun(b,c))的函数调用中,实参的个数为(28)。28(A)1(B)2(C)3(D)4(2)程序的运行结果是(29)。29(A)6(B)10(C)12(D)153.有下列程序(考点:带参数的宏定义)#includestdio.h#defineM(x,y)((x%y==1)?1:0)intfun(int*a,intn){inti,s=0;for(i=0;in;i++)if(M(a[i],2)&&M(a[i],3))s=s+a[i];returns;}voidmain(){inta[]={1,2,3,4,5,6,7};printf(%d\n,fun(a,7));}(1)宏调用M(a[i],2)&&M(a[i],3)为真时所要表达的是(30)。30(A)判断a[i]是否能被2或3整除(B)判断a[i]是否能被2和3整除(C)判断a[i]被2或3整除时,是否至少有一种情况余1(D)判断a[i]被2和3整除时,是否都余1(2)程序的运行结果是(31)。31(A)15(B)6(C)16(D)84.有下列程序(考点:函数(地址参数)、指针运算)#includestdio.hvoidprt(int*x,int*y,int*z){printf(%d,%d,%d\n,++*x,++*y,*(z++));}voidmain(){inta=10,b=40,c=20;四川省计算机二级考试第三十二次C与C++语言笔试试卷第5页共10页prt(&a,&b,&c);prt(&a,&b,&c);}(1)第一次调用函数prt的运行结果是(32)。32(A)11,42,31(B)11,41,20(C)11,21,40(D)11,41,21(2)第二次调用函数prt的运行结果是(33)。33(A)12,42,20(B)12,22,41(C)11,21,41(D)12,42,225.有如下程序(考点:全局变量和局部变量、函数(地址参数)、)#includestdio.hintb=1;intfun(int*a){intb=0;b=b+a[0];returnb;}voidmain(){inta[]={1,2,3,4,5,6},i;for(i=0;i2;i++){b=b+fun(a+i);printf(%d,b);}}(1)程序的运行结果是(34)。34(A)24(B)412(C)23(D)410(2)若将函数fun中的定义“intb=0;”去掉,则程序的运行结果为(35)。35(A)24(B)412(C)23(D)4106.有如下程序(考点:字符数组、函数(地址参数)、逻辑表达式)#includestdio.hvoidfun(char*s,char*t1,char*t2){inti,j=0;for(i=0;s[i]!='\0';i++){if(i%2&&(s[i]='a'&&s[i]='z'))t1[i]=s[i]-'a'+'A';elset1[i]=s[i];if(s[i]='0'&&s[i]='9'){t2[j]=s[i];j++;}}四川省计算机二级考试第三十二次C与C++语言笔试试卷第6页共10页t1[i]=t2[j]='\0';}voidmain(){chars[20]=2abcde3fg45,t1[20],t2[20];fun(s,t1,t2);puts(t1);puts(t2);}(1)程序中第一个puts的输出结果为(36)36(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45(2)程序中第二个puts的输出结果为(37)37(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG457.有如下程序:(考点:命令行参数、宏定义、条件运算符)#includestdio.h#defineIsAlpha(c)c='a'&&c='z'?1:0voidmain(intargc,int**argv){char*str,cx;intcn=0;if(argc2)return;str=(*++argv);while(*str){cx=(*str++);if(IsAlpha(cx))cn++;}printf(%d\n,cn);}若上述程序经编译连接后形成的可执行文件名为:2-8.exe(1)当输入命令行:2-8.exe2abHcabA2时,输出为(38)。38(A)5(B)3(C)1(D)2(2)上述程序的功能是(39)。39(A)命令行第一参数2abHc中出现的小写字母个数(B)命令行第一参数2abHc中出现的大写字母个数(C)命令行第二参数abA2中出现的小写字母个数(D)命令行第二参数abA2中出现的大写字母个数8.有如下程序:(考点:文件、大小写字母转换方法)#includestdio.hvoidmain(){charch;FILE*fp;if((fp=fopen(test.dat,r+))==NULL)四川省计算机二级考试第三十二次C与C++语言笔试试卷第7页共10页{print