还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机软件基础
一、填空题1.程序设计的关键在于设计出一个好的算法2.数据、数据节点和数据项构成了数据组织的三个层次其中数据项是具有独立含义的最小标识单位3.数据的逻辑结构和物理结构之间的相互运算是通过算法来实现的4.所有节点按1对1的邻接关系构成的整体就是线性结构5.表长为0的线性表称为空表6.直接插入排序最好情况的时间复杂度为On7.程序段“i=l;whilei=ni=i*2”的时间复杂度为Olog2n8.c语言属于计算机高级语言,既可以用来写系统软件,也可以用来写应用软件9.算法是有穷的,而程序可以是无穷的10.实型常量在一般微型机中占用4个字节11.char型和int型的运算结果为int型12.Getchar和putchar函数只能输入、输出1个字符13.源程序必须翻译成机器指令即机器语言,这一工作由编译系统来完成14.字符串的长度为串中字符的个数,但在内存中所占的字节数应比长度多115.执行a=3,b=4,a=a+b,b=a+b后,则a和b的值分别为7和1116.对于scanf“%2d%3d%4d”,a,b,c语句,若键入l23456789,则变量b的值为34517.设intx=10yz;执行y=z=x;x=y=-Z后,变量x的结果是118.若有说明Inta[]
[5]={12345678910,则数组第一维的大小为219.在函数定义中,若没有返回值,其类型定义为空类型20.c语言规定不能嵌套定义函数,但可以嵌套调用函数21.程序中出现的/*…...*/表示注释,可以出现在程序的任何地方22.c语言的数据结构是以数据类型的形式描述出来的23.%运算符的运算对象就为整数24.getchar函数只能出现在表达式的位置,接收该函数的值时可以用字符型或整型变量25.请将│x│≤a,写成一个逻辑表达式x=ax=-a26.在结构化程序的三种基本结构是指顺序结构、选择结构和循环结构27.在c语言中,二维数组在内存中的排列顺序是按行存入28.一个完整的c程序可由1个主函数或由1个主函数和若干个子函数组成29.在c语言中,变量的使用一般遵守“先定义,而使用”的原则30.c语言中有两个专门的指针运算符*和,它们都是单目运算符31.在计算机的数据处理中,将字符、声音、光、图形和图像均称为数据32.在线性表的顺序存储结构中,其相邻的数据节点在物理位置上也是相邻的33.若在数据处理中,需要经常对数据进行插入、删除运算,则宜将该数据设置为链式存储34.二叉树的遍历方法有先序遍历、后序遍历和中序遍历35.单链表表示法的基本思想是用指针表示结点间的逻辑关系36.C语言规定,数组元素的下标从0开始,最大值为长度减137.在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式38.一个变量的作用域是指该变量在程序中的有效范围,局部变量的作用域就是其所在的函数39.C语言中访问地址的方式有两种即直接存取方式和间接存取方式40.运行下列语句int*p,*q,x
[5];p=x;q=p+3;则q指向数值元素x
[3]41.若某问题的空间复杂度为o1,则认为该问题所耗空间与问题的规模无关42.在线性表的链式存储结构中,单链表中每个节点是一个结构类型43.在三对角阵的压缩存储中,已知Aij=Bk,试建立k与i,j之间的关系为k=2i+j44.在软件的开发模型中,螺旋模型是一种风险驱动模型,它将瀑布模型和原型模型结合起来45.设有100个元素,用折半查找法进行查找时,最大比较次数是7
二、选择题1.下列是C语言正确的标识符的是【D】A.aB.a=2C.a.3D.a_32.下列表达式中,值为1的表达式是【D】A.3%5B.3/
5.0C.3/5D.353.设变量abcd依次为字符型、整型、单精度型、双精度型,则表达式“a+b/c*d”的数据类型为【D】A.整型B.字符型C.单精度型D.双精度型4.能正确表达“0≤a≤10”的表达式是【A】A.10=aa=0B.10=alla=0C.0=a=10D.!a0!a105.在C语言中,main函数的位置【C】A.必须作为第一个函数B.必须作为最后一个函数C.可以任意,但必须要在函数之外D.必须放在它所调用的函数之后6.对于输入语句“scanf“%d%d”ab”,下面正确的输入方法是【A】A.12回车B.12回车C.1回车2回车D.1;2回车7.下列程序段“inti=j=10;printf“d%d\n”,--Ij--;”的输出结果是【B】A.1110B.910C.119D.1098.下面有关for循环正确的描述是【D】A.for循环只能用语句循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for语句的循环体中,可以包含多条语句,但要用花括号括起来9.设有定义“intx
[5]={l23;”,则数组x占用的内存字节数是【D】A.3B.5C.6D.1010.若有定义语句“intmn=2*p=m;”,则能完成m=n功能的语句为【B】A.m=*p;B.*p=*n;C.m=nD.m=p11.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为【C】A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构12.单链表的一个存储结点包含【D】A.数据域或指针域B.指针域或链域C.指针域和链域D.数据域和链域13.循环队列的队满条件为【C】A.sq.rear+1%maxsize==sq.front+1%maxsizeB.sq.rear+1%maxsize==sq.front+lC.sq.rear+1%maxsize==sq.frontD.sq.rear==sq.front14.深度为6的二叉树最多有个结点【B】A.64B.63C.32D.3115.用顺序查找法对具有n个结点的线性表查找的时间复杂性量级为【C】A.On2B.Onlog2nC.OnD.Olog2n16.设有语句“intx
[6]={543210,*p=x;”,则值2的表达式为【A】A.*p+4B.*p+5C.*p+4D.*p+517.算法分析的两个主要方面是【A】A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性18.带头结点的单链表Head为空的判定条件是【B】A.Head=NULL;B.Head-next=NULL C.Head-next=Head;D.均不正确;19.一个队列的输入列序为1234,则该队列的输出序列是【B】A.432lB.1234C.1432D.324120.堆Heap是【B】A.完全二叉树B.线性表C.满二叉树D.都不正确21.在表长为n的顺序表中,实施顺序查找,在查找不成功时,与关键字比较的次数为【C】A.nB.1C.n+1D.n-122.下列选项中,合法的C语言保留字是【C】A.AUTOB.SWITC.elseD.integer23.下列选项中非法的实型常数是【A】A.3E
1.0B.
1.0E3C..3E-2D.3E-224.设有定义“floata=
5.0,b=
2.5;”,则表达式intb+a/b的值是【D】A.3B.4C.
3.0D.
4.025.设inta=10,b=20,c=30;条件表达式aba=15c的值是【B】A.10B.15C.20D.3026.一个C程序是由【B】A.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成27.下列给出的符号串中,可以作为C语言标识符是的【C】A.printfB.doC.GOTOD.while28.在c语言中,合法的字符常量是【B】A.//A//B./\x10/C./0a/D.a29.以下表达式中与表达式“m=n++”功能完全相同的是【A】A.m=n,n=n+lB.n=n+l,m=nC.m=++nD.m+=n+130.若变量ai已正确定义,且i已正确赋值,非法的表达式是【C】A.a==1B.++iC.a=a++=5D.a=inti32.当调用函数时,实参是一个数组名,则向对应形参传送的是【B】A.数组的长度B.数组的首地址C.数组中每一个元素的地址D.数组中每个元素的值33.假定的数据定义语句“floatx;”,能为x输入数据的正确语句是【D】A.scanf“%f,’,
3.5;B.scanf“x=%f”;C.scanf“%
4.2f”,X;D.scanf“%f”,x;34.下列程序段的输出结果是【D】intx=2;doprinff“%d”,x一;while!--x;A.2,B.10,C.2,1,D.2,0,35.选用数组元素下标时,可能造成程序运行出错的下标是【B】A.0B.-1C.正实数D.整型变量36.设有语句“chara[]=“123”,b[]={‘1’,’2’,’3’;”,下列说法正确的是【D】A.a
[3]是不可知的任意字符B.数组ab的长度相同C.b
[3]的值为’\0’D.数组a的长度大于数组b的长度37.执行程序段“intx=8;while--x6sprintf“*”后的输出结果是【A】A.*B.**C.***D.****38.设有定义语句inta=l,b=2,c=3,d=4;执行下列程序段后x的值是【A】ifabifcdx=10;elseifacifbdx=20;elsex=30;elsex=40;elsex=50;A.10B.20C.30D.4039.C语言中【C】A.不能使用do—while语句构成循环体B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为零时结束循环D.do.while语句构成的循环,当while语句中的表达式值为非零时结束循环40.以下数组语句中,正确的是【C】A.inta[]
[3];B.intb
[3][]={0l23};C.intc
[10]
[10]={0};D.intd
[3][]={{l2}{130{l}};41.设有语句“intx
[8]={54321},*p=x;”,则*p+3的值为【C】A.5B.4C.3D.242.计算机内部数据处理的基本单位是【B】A.数据B.数据元素C.数据项D.数据库43.在一个具有n个结点的有序顺序表中插入一个新结点并仍然有序的时间复杂度是【B】A.O1B.On2C.OnD.Onlog2n44.设C语言数组Data[m+1]作为循环队列SQ的存储空间,front为队头指针,real为队尾指针,则执行出队操作的语句为【D】A.frint=front+1;,B.front=front+1%m C.rear=rear+1%m;D.front=front+1%m+1;45.树最适合用来表示【C】A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据46.长度为12的有序表AptAugDecFebJanJulJunMarMayNovOctSep,按对半查找法对该表进行查找在表内各元素等概率情况下查找成功所需要的平均比较次数为【B】A.35/12B.37/12C.39/12D43/12
三、简答题1.软件维护工作可分为哪几类维护工作答软件维护工作可分如下四类维护工作1改正性维护;2适应性维护;3完善性维护;4预防性维护2.良好的程序设计风格除了将程序文档化和格式化以外,还需要遵循哪些准则答良好的程序设计风格除了将程序文档化和格式化以外,还需要遵循以下准则1节俭化;2模块化;3简单化;4结构化3.用文字简述数据x进栈和退栈操作的基本步骤答进栈操作的基本步骤为1先判断栈是否已满,若满,则进行上溢处理,否则进行22栈项指针上移1个节点3将x加入到top所指位置‘退栈操作的基本步骤为1检查栈是否为空,若栈空,则进行下溢处理,否则进行22保留被删除元素到变量x中若不需要保存,则舍去这一步3栈顶指针下移1个节点4.软件测试时,程序中尚未发现的错误的数量往往与在该段程序中己发现的错误的数量成正比所以软件测试时,除尽早地、不断地进行软件测试外,还应遵循的其它基本原则是什么答软件测试时,还应遵循的其它基本原则是1设计测试用例时,要给出测试的预期结果2开发小组和测试小组分开3要设计非法输入的测试用例4在对程序修改之后要进行回归测试5.简述哈夫曼树的性质答由哈夫曼树的生成过程可得如下性质1给定权值的哈夫曼树不唯一,但是WPL,为定值2权值越大的节点离根节点就越近3哈夫曼树中无度为l的节点4哈夫曼树节点总个数刀=2×叶子节点个数一1=2×权值个数.1=2n.一16.用文字简述将内容为x节点加入顺序队列和出队操作的基本步骤答将内容为x节点加入顺序队列的基本步骤为1先判断队列是否已满,若满则退出,否则进行22队尾指针下移1个节点位置3在队尾指针位置加入x出队操作的基本步骤为1先判断队列是否己空,若空则退出,否则进行22保留队头元素到x变量中3队头指针下移1个节点位置
四、程序分析题1.下列程序运行后的输出结果是m=3Main(){intk,m=0;fork=0;k2;k++{m++;ifm/2continue;m++}printf//m=%d\n//m;}2.下列程序运行后的输出结果是16#inlcudestdio.hMain{inta[]={l23456}*p;p=a;*p+3+=2;printf//%d%d\n//*p*p+3;}3.下列程序运行后的输出结果是s=55#inlcudestdio.hMain{intSi=l,sum;for;i=10;i++,s=sumi;printf//S=%d\n//,s;}sumintk{intx=0;returnx+=k;}4.下列程序运行后的输出结果是abcdmain{charsl=//abcdABCD//,s2
[10];intk=0,j=0;whilesl[k]!=/A/s2[j++]=s1[k++];s2[j]=0;printf//%s\n”,s2;}5.下列程序运行后的输出结果是DCBAEFvoidfunchar*pl,intn{chart,*p2;p2=pl+n-1;whilep1p2{1=*pl;*p1++=*p2;*p2--=t}Main{char*p=//ABCDEF//;funp4;printf{%s\n//p;}6.下列程序运行后的输出结果是13Main{intx=11;whilex10x50{x++ifx/3{x++;break;}elsecontinue;}printf//%d\n//,x;}7.下列程序运行后的输出结果是6intb=l;intfint*a{b+=*a;returnb;}main{inta=2,b=3a+=fb;printf//%d\n//a;}8.下列程序运行后的输出结果是23Main{intx[]
[4]={12345678391024296},s=0,k=0;for;k4;k++s+=x[k][k];printf//%d\n//s;}9.下列程序段的功能是计算单链表的表长intL_lklist1klisthead{p=head;j=0;whilep-next!=NULL{p=p-next;j++;}returnj;}10.下列程序运行后的输出结果是16323#includestdio.hmain{intj=1j=3;printf//%d//,i++;{inti=0;I+=j*2;printf//%d%d//ij;}printf//%d%d//ij;}11.下列程序运行后的输出结果是10intfintn{ifn==1return1;elsereturnfn-1+1;}main{intij=0;fori=1;i5;i++j+=fi;printf//%d\n//j;}12.阅读下列算法,写出其完成的功能是借助栈将一个带头结点的单链表倒置voidlistLinkedListTP*head{LStackTPIsp;DataTypex;InitStackls;p=head-next;whilep!=NULL{Pushlsp-data;p=p-next;}p=head-next;while!EmptyStaekJS{Poplsx;p-data=x;p=p-next;}}
五、程序填空题1.下面程序是从输入3个数中找出最大数,并输出最大数intmaxintxintyintz{intt;t=xyx:y;retumtzt:z}main{intabc;scanf//%d%d%d//,abc;prinf//max=%d\nmaxabc;}2.以下为冒泡排序的算法,请分析算法,并在处填充适当的语句voidbubblesortintnlistr{fori=l;i=n-1;i++{flag=1;forj=l;j=n-1;j++ifr[j+1].keyr[j].key{flag=0;p=r[j];r[j]=r[j+1];r[j+1]=p;ifflagreturn;}}3.下列程序的功能是将输入的10个整型数存入一维数组中,并求其中所有素数之和并输出main{intx
[10],sum=0flagkj;fork=0;k10;k++scanf//%d//,x[k];fork=0;kl0;k++{ifx[k]==1continue;flag=l;forj=2;j=x[k]/2;j++ifx[k]%j==0{flag=0;break;}ifflag==1sum+=x[k];}printf//%d\n//,s;}4.下面程序的功能是输入10个字符和1个字符X,从10个字符中查找x,找到则输出其序号,找不到则输出0main{charstr
[10]x*p;intflag=0;forp=str;pstr+10;p++scanf//%c//,p;scanf//%c//,x;forp=str;pstr+10;p++if*p==x{flag=1;break;}ifflagprinf//0\n//,p-str+1;elseprinf//0\n//}5.以下运算实现在循环队上的出队列,请在处用适当的语句予以填充intOutCyeQueueCycqueueTp*sq,DataType*x{ifsq-fron==sq-rear{error//队空//;returno;}else{sq-front=sq-front+1%maxsize;*x=sq-data[sq-front];Return1;}}6.以下运算实现在链队上的入队列,请在处用适当的语句予以填充voidEnQueueQueptrTp*lq,dataTypex{LqueueTp*p;p=LqueueTp*mallocsizeofLqueueTp;p-data=x;p-next=NULL;1q-rear-next=p;lq-rear=p;}
六、编程题1.输入一个长整型正整数,将其转换成对应八进制整数的字符串,然后输出该字符串要求用指向字符串的指针变量来处理求出的八进制数字字符解main{chars
[10],*p;longx;inty;p=s+8;*p+1=/\0/;scanf//%ld//,x;whilex!=0L;*y=x%8;*p=y+/\0/;p--;x=x/8}P++Printf//%s\n//,p;}2.以二叉链表作为存储结构,用类C语言编写求二叉树中叶子数的算法解先求左子树的叶子数,再求右子树的叶子数,两者相加就是根结点叶子数,也就是对应二叉树的叶子数IntleafcountbitreptrT{ifT==NULLleaf=0;elseifT-Ichild=NULLT-rchild==NULLleaf=1;else{L=leafcountT-lchild;R=leafcountT-rchild;leaf=-L+R;}returnleaf;}3.编程序,输入10个短整型正整数存入一维数组,求其中所有素数之和并输出.解main{shortx
[10]s=0flagkj;fork=0;kl0;k++scanf//%d//x[k];fork=0;kl0;k++{ifx[k]==1continue;flag=l;forj=2;j=x[k]/2;j++ifx[k]%j==0{flag=0;break;}ifflag==1s+=x[k];}printf//%d\n//s;}。