1、一、选取题(每小题1分,共40小题,共40分)1.算法空间复杂度是指( )。A.算法程序长度B.算法程序中=指令条数C.算法程序所占存储空间D.算法执行过程中所需要存储空间2.下列论述中对的是( )。A.一种逻辑数据构造只能有一种存储构造B.逻辑构造属于线性构造,存储构造属于非线性构造C.一种逻辑数据构造可以有各种存储构造,且各种存储构造不影响数据解决效率D.一种逻辑数据构造可以有各种存储构造,且各种存储构造影响数据解决效率3.简朴互换排序办法是( )。A.迅速排序B.选取排序C.堆排序D.冒泡排序4.关于构造化程序设计原则和办法描述错误是( )。A.选用构造只准许有一种入口和一种出口B.复杂
2、构造应当用嵌套基本控制构造进行组合嵌套来实现C.不允许使用GOT0语句D.语言中若没有控制构造,应当采用先后一致办法来模仿5.相对于数据库系统,文献系统重要缺陷有数据关联差、数据不一致性和( )。A.可重用性差B.安全性差C.非持久性D.冗余性6.面向对象设计办法与老式面向过程办法有本质不同,它基本原理是( )。A.模仿现实世界中不同事物之间联系B.强调模仿现实世界中算法而不强调概念C.使用现实世界概念抽象地思考问题从而自然地解决问题D.不强调模仿现实世界中算法而强调概念7.对如下二叉树进行后序遍历成果为( )。A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA8.软件设计涉及软
3、件构造、数据接口和过程设计,其中软件过程设计是指( )。A.模块间关系B.系统构造部件转换成软件过程描述C.软件层次构造D.软件开发过程9.两个或两个以上模块之间关联紧密限度称为( )。A.耦合度B.内聚度C.复杂度D.数据传播特性10.下列描述错误是( )。A.继承分为多重继承和单继承B.对象之间通信靠传递消息来实现C.在外面看不到对象内部特性是基于对象“模块独立性好”这个特性D.类是具有共同属性、共同办法对象集合11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间关系是( )。A.DB涉及DBS和DBMSB.DBMS涉及DB和DBSC.DBS涉及DB和DBMSD.没有任何关系12
4、.下列合法声明语句是( )。A.int_abc=50;B.double int=3+5e2.5;C.long do=1L:D.float 3_asd=3e-3;13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0是( )。A.x&YB.x=YC.xy+z&y-zD.!(x14.若ch为char型变量,k为int型变量(已知字符aASCIl码是97),则执行下列语句后输出成果为( )。ch=b;k=10:printf(%X,%o,ch,ch,k);printf(k=%dn,k);A.因变量类型与格式描述符类型不匹配,输出无定值B.输出项与格式描述符个数不符,输出为0值
5、或不定值C.62,142,k一%dD.62,142,k一%l015.有下列程序: 、fun(int X,int y)return(x+y);)main() int a=1,b=2,c=3,sum;sum=fun(a+,b+,a+b),c+);printf(%dn,sum);执行后输出成果是( )。A.6B.7C.8D.916.假定x和Y为double型,则表达式x=2,yx+3/2值是( )。A.3.500000B.3C.2.000000D.3.00000017.有如下程序:main()int x=1,a=0,b=0;switch(x)case 0:b+;case l:a+;case 2:a+
6、;b+;)printf(a=%d,b=%dn,a,b);)该程序输出成果是( )。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=218.下列程序输出成果是( )。main()int i=1,j=2,k=3;if(i+= =1&(+j= =3= =k+= =3)printf(%d%d%dn,i,J,k);)A.1 2 3B.2 3 4C.2 2 3D.2 3 319.下列程序输出成果是( )。#includemain() int a=0,i;for(i=1;i5;i+) switch(i) case 0:case 3:a+=1;case l:case 2:a+=2;def
7、ault:a+=3;)printf(%d,i);)A.19 B.1 C.6 D.820.有如下程序:main()int X,i;for(i=1;i=50;i+)x=i;if(X%2=O)if(x%3=O)if(X%7=0) .printf(%d,i);)输出成果是( )。A.28B.27C.42D.4121.如下程序输出成果是( )。main()int a33=1,2,3,4),5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;jnext=r-next;p-:next=r;rm:next=q;B.q-:next=r;q-next=r-next;r-next=q;C.q-:ne
8、xt=r-next;r-next=q;p-next=r;D.q-:next=q;p-next=r;q-next=r-next;26.有下列程序:main()int i,j,x=0;for(i=0,i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+:)x+:printf(x=%dnx);程序执行后输出成果是( )。A.x=4B.x=8C.x=6D.x=1227.有下列程序:int funl(double a)return a*=a; 、int fun2(double x,double y)double a=0,b=0;a=funl(x);b=funl(y);re
9、turn(int)(a+b);)main()double w;w=fun2(1.1,2.0),程序执行后变量w中值是( )。 、A.5.21 B.5 C.5.0 D.0.028.有下列程序:main()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(%dn,s);程序执行后输出成果是( )。A.45B.20C.25D.3629.有下列程序:int fun(int n)if(n= =1)return l;elsereturn(n+fun(n-1):main() int x;seanf(%d,&x);x=fun(x);p
10、rintf(%dn,x);执行程序时,给变量x输入l0,程序输出成果是( )。A.55B.54C.65D.4530.有下列程序:int fun(int x,int n) static int sum=0,i;for(i=0;i return sum;main()int a3=1,2,3,4,5),b3=6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf(%dn,s);程序执行后输出成果是( )。 、A.45B.50C.60D.5531.有下列程序:main()f char*P=3697,2584);int i,j;long num=0;for(i=0;i2;i+)j
11、=0;while(pij!=0)if(pij-t0)%2)num=10*num+pjj-0;j+=2;)printf(%dn,num);)程序执行后输出成果是( )。A.35 B.37 C.39 D.397532.如下程序输出成果是( )。main() char st20=hell0Ot”;printf(%d%dn,strlen(st),sizeof(st);A.9 9B.5 20C.13 20D.20 2033.若有下定义:int t32;,能对的表达t数组元素地址表达式是( )。A.&t32B.t3C.tlD.t2234.函数fseek(pf,OL,SEEK_END)中SEEK_END代表
12、起始点是( )。A.文献开始B.文献末尾C.文献当前位置D.以上都不对35.下述程序输出成果是( )。#includemain()int i;for(i=1;i=20)&(i*i=lOO)break;printf(%dn,i*i);)A.49B.36C.25D.6436.若有定义“int b8,*p=b;”,则p+6表达( )。A.数组元素b6值B.数组元素b6地址C.数组元素b7地址D.数组元素b0值加上637.设变量已正拟定义,则如下能对的计算f=n!程序是( )。A.f=0;for(i=1;i1;i+)f*=i;D.f=1;for(i=n;i=2;i-)f*=i;38.下述程序执行输出成
13、果是( )。#includemain()char a24;,strcpy(a。are);strcpy(a1,you);ao3=&;printf(%sn,a);)A.are&youB.youC.areD.&39.设x=011050,则x=x&01252值是( )。A.1000B.1001C.0010D.100040.在“文献涉及,预解决语句使用形式中,当#include背面文献名用(双引号)括时,寻找被涉及文献方式是( )。A.直接按系统设定原则方式搜索目录B.先在源程序所在目录搜索,如没找到,再按系统设定原则方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录二、基本操作题(共18分)请补充
14、函数proc(),该函数功能是计算下面公式SN值:SN=1+1/3十4/5+.+2N-1/SN-1例如,当N=20时,SN=29.031674。注意:某些源程序给出如下。请勿改动main()函数和其她函数中任何内容,仅在函数proc()横线上填入所编写若干表达式或语句。试题程序:#include#include#includedouble proc(int n)double s=1.0,sl=0.0;int k;for(【1】;k=n;k+)sl=S;【2】return 【3】 ;)void main()int k=0:double sum;system(CLS);printf(nPlease
15、 input N=);scanf(%d,&k);sum=proc(k);printf(nS=%If,sum);)三、程序改错题(共24分)下列给定程序中,函数proc()功能是依照整型形参n,计算如下公式值:Y=1-1/(22)+1/(33)-1/(44)+(-1)(n+1)/(nn)例如,n中值为l0,则应输出0.817962。请修改程序中错误,使它能得到对的成果。注意:不要改动main()函数,不得增行或删行,也不得更改程序构造。试题程序:#include#include#includedouble proc(int n)double y=1.0;f|*found*int J=1;.int
16、 i;for(i=2;inext=q,这时r指向节点为q;p-next=r,这时P指向节点为r;q-next:r-next,由于r节点已经指向q,因此执行这个语句后q又指向q,因此选项D不对的。26.B。【解析】在第1次外层for循环中,一方面x+得到x=1。进入到内层for循环,只有循环j值为奇数时,变量x值才自加1,因此在内层for循环执行过程中,变量x值自加两次,当退出内层for循环时,x=3,然后执行x+,得到x=4。在进入执行第2次外层for循环中,一方面x+得到x=5。进入到内层for循环,只有循环变量J值为奇数时,变量X值才自加1,因此在内层for循环执行过程中,变量X值自加l两
17、次,当退出内层for循环时,x=7,然后执行x+,得到x=8,因此打印输出变量x值为8。27.C。【解析】子函数funl(double a)功能是返回a平方值整数某些。子函数fun2(double X, double y)功能是返回X平方值整数某些与Y平方值整数某些和。又由于题中变量W定义为double型,函数fun(2)定义为int型,按照各类数值型数据间混合运算,整型数据被转换为实型数据。因此双精度型变量w值为5.0。28.c。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,由于C语言规定数组名做表达式相称于数组首地址,也就是第一种元素地址。因而,*(t
18、+i)代表数组第i+1个元素。因此程序运营成果是l+3+5+7+9=25,即变量S值等于25。29.A。【解析】本题在函数int fun(int n)定义中又浮现了对函数fun调用,因此函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用过程为fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)=10+9+8+7+fun(6)=10+9+8+7+6+fun(6)=10+9+8+7+6+5+fun(4)=10+9+8+7+6+5+4+fun(3)=10+9+8+7+6+5+4+3+fun(2)=10+9+8+7+6+5+4
19、+3+2+fun(1)=10+9+8+7+6+5+4+3+2=5530.C。【解析】在函数int fun(int x,int n)定义中,变量sum为一种静态局部变量。由于在整个程序运营期间,静态局部变量在内存中静态存储中占据着永久存储单元。函数int fun(int x,int n)功能是求出数组x各个元素和,因此在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,因此s=15+45=60。31.D。【解析】执行第一次for循环时,用表达式piJ!=o来判断字符串数组指针P与否到达字符串结尾,假如
20、没有到达,继续执行while中语句。if语句表达(pij-o)除2余数不为0时,即字符串所有奇数,执行背面语句。因此退出第1次for循环体时,输出为397,执行第2次循环体。对字符串“2584”进行解决,输出成果为5,因而最后输出成果为3975。32.B。【解析】从题目中可知,O、t、分别为一种字符,而sizeof是求字节个数函数,其中涉及O占字节,strlen函数是求数组长度函数;其以0结束,因而strlen值为5,sizeof值为20。33.C。【解析】数组下标是从0开始,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项c中表达是第一种首地址;选项D表达为其元
21、素值,并不是地址。34.B。【解析SEEK_SET代表文献开始,SEEK_END代表文献末尾,SEEK_CUR代表文献当前位置。35.C。【解析】当if执行到第一种满足(i*i=20)&(i*i=100)这个条件i浮现时,通过break语句跳出循环,执行下面prinlf语句。36.B。【解析】指针中存储是变量地址,指针也可以进行增减运算,这时指针移动最小单位是一种存储单元,而不是一种字节。因此题中p+6指是将指针向后移动了6个存储单元,即指向b6,存储是b6地址。37.D。【解析】由n!数字定义可知n!=n*(n-1)*(n-2)*1。在选项A中,由于f初值为0,在for循环语句中,f依次乘以
22、l,2,3,n,最后计算得到f=n!=0,因此选项A不对的。在选项B中,f初值为l,在for循环语句中,f依次乘以l,2,3,(n-1),最后计算得到f=(n-1)!,因此选项B不对的。在选项C中,f初值为l,在for循环语句中,f依次乘以n,n+1,n+2,因此选项C不对的。在选项D中,f初值为l,在for循环语句中,f依次乘以n,n-1,n-2,2,最后计算得到f=n!,因此选项D对的。38.A。【解析strcpy实现功能是复制,该操作把are复制到a中,aE03 E33一&,且strcpy(aEl, you)把you复制到al中,故输出a为“are&you”。39.A。【解析】本题重要考
23、察按位与运算,x=Oll050二进制形式为01000,Ol252二进制形式为1010,两者相与得1000。40.B。【解析】#include”文献名”,预解决程序一方面在引用被涉及文献源文献所在目录下搜索指定文献,如没找到,再按系统指定原则目录搜索。二、基本操作题程序填空题【1】k=2【2】s+=(2*k一1)/sl【3】s【解析】由题目中所给公式可知,多项武第一项为1。变量s中存储多项式和,其初始值为l。因而,循环从第二项开始,因而,【1】处填“k=2”;变量sl中存储各项表达武值,由公式可知,【2】处填“s+=(2*k-1)/sl”;题目中规定将多项式和返回到主函数当中,因而,【3】处填“
24、s”。三、程序改错题(1)错误:int j=1;对的:double j=1.0;(2)错误:y+=1/(i*i);对的:y+=j/(i*i);【解析】由函数proc()可知,变量j作用是控制每一项符号变化,并且作为运算分子,应改为double型变量。因而,“int j=1;”应改为“double j=1.0;”。变量y中存储多项式值,多项式中每一项符号由变量j决定。因而,“y+=1/(i*i);”应改为“y+=j/(i*i);”。四、程序设计题char*proc(char(*a)81,int M)char*max;int i=0:max=aO:for(i=0;iif(strlen(max)max=ai;return max;/返回最长字符串地址【解析】本题一方面要定义一种字符指针用于保存最长字符串,并使其初始值指向第一种字符串;再循环遍历字符串数组,通过if语句比较字符串长度,并把最长字符串地址赋给字符指针;最后返回最长字符串地址。