计算机软件基础_第1页
计算机软件基础_第2页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计 算 机 软 件 基 础一、填空题1程序设计的关键在于设计出一个好的算法 。2数据、数据节点和数据项构成了数据组织的三个层次。其中数据项 是具有独立含义的最小标识单位。3数据的逻辑结构和物理结构之间的相互运算是通过算法 来实现的。4所有节点按1对1的邻接关系构成的整体就是线性 结构。5表长为0的线性表称为 空 表。6直接插入排序最好情况的时间复杂度为 O(n) 。7程序段“i=l;while(i<=n)i=i*2”的时间复杂度为 O(log2n) 。8c语言属于计算机高级语言,既可以用来写系统软件,也可以用来写应用软件 。9算法是有穷的,而程序可以是 无穷的 。10实型常量在一般微型机

2、中占用 4 个字节。11char型和int型的运算结果为int 型。12Getchar()和putchar()函数只能输入、输出 1 个字符。13源程序必须翻译成机器指令即机器语言,这一工作由编译系统 来完成。14字符串的长度为串中字符的个数,但在内存中所占的字节数应比长度多1 。15执行:a=3,b=4,a=a+b,b=a+b后,则a和b的值分别为 7 和11。16对于scanf(“2d3d4d”,&a,&b,&c)语句,若键入:l 23456789,则变量b的值为345 。17设intx=10,y,z;执行y=z=x;x=y=-Z后,变量x的结果是 1 。18若有说

3、明:Int a5=1,2,3,4,5,6,7,8,9,10),则数组第一维的大小为2 。19在函数定义中,若没有返回值,其类型定义为 空类型 。20c语言规定不能嵌套定义函数,但可以嵌套调用 函数。21程序中出现的/*.*表示注释,可以出现在程序的任何 地方。22c语言的数据结构是以 数据类型 的形式描述出来的。23运算符的运算对象就为 整数 。24getchar()函数只能出现在 表达式 的位置,接收该函数的值时可以用字符型或整型变量。25请将xa,写成一个逻辑表达式: x<=a&&x>=-a 。26在结构化程序的三种基本结构是指 顺序结构 、选择结构和循环结构。

4、27在c语言中,二维数组在内存中的排列顺序是按 行 存入。28一个完整的c程序可由1个主函数或由1个主函数和 若干个 子函数组成。29在c语言中,变量的使用一般遵守 “先定义,而使用 ”的原则。30c语言中有两个专门的指针运算符*和&,它们都是 单 目运算符。31在计算机的数据处理中,将字符、声音、 光 、图形和图像均称为数据。32在线性表的顺序存储结构中,其相邻的数据节点在物理位置上也是 相邻 的。33若在数据处理中,需要经常对数据进行插入、删除运算,则宜将该数据设置为 链式 存储。34二叉树的遍历方法有:先序遍历、后序遍历和 中序遍历 。35单链表表示法的基本思想是用指针 表示结点

5、间的逻辑关系。36C语言规定,数组元素的下标从 0 开始,最大值为长度减1。37在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型 表达式。38一个变量的作用域是指该变量在程序中的有效范围,局部变量的作用域就是其所在的 函数 。39C语言中访问地址的方式有两种即直接存取方式和 间接存取 方式。40运行下列语句:int*p,*q,x5;p=x;q=p+3;则q指向数值元素 x3 。41若某问题的空间复杂度为o(1),则认为该问题所耗空间与问题的 规模 无关。42在线性表的链式存储结构中,单链表中每个节点是一个 结构类型 。43在三对角阵的压缩存储中,已知Aij=Bk,试建立k与

6、i,j之间的关系为: k=2i+j 。44在软件的开发模型中,螺旋模型是一种 风险驱动 模型,它将瀑布模型和原型模型结合起来。45设有100个元素,用折半查找法进行查找时,最大比较次数是7 。二、选择题1下列是C语言正确的标识符的是【 D 】A? a Ba=2 Ca.3 Da_32下列表达式中,值为1的表达式是 【 D 】 A35 B3/5.0 C3/5 D3<53设变量a,b,c,d依次为字符型、整型、单精度型、双精度型,则表达式“a+bc*d”的数据类型为【 D 】 A整型 B字符型 C单精度型 D双精度型4能正确表达“0a10”的表达式是【 A 】 A10>=a&&a

7、mp;a>=0 B (10>=a)ll(a>=0) C0<=a<=10 D(!a<0)&&(!a>10)5在C语言中,main()函数的位置 【 C 】 A必须作为第一个函数 B必须作为最后一个函数C可以任意,但必须要在函数之外 D必须放在它所调用的函数之后6对于输入语句“scanf(“d,d”,&a,&b)”,下面正确的输入方法是【 A 】 A1,2回车 B12回车 C1回车2回车 D1;2回车7下列程序段“int i=j=10;printf(“&d,dn”,-I,j-);”的输出结果是【 B 】 A11,10

8、 B9,10 C11,9 D10,98下面有关for循环正确的描述是【 D 】 Afor循环只能用语句循环次数已经确定的情况 Bfor循环是先执行循环体语句,后判定表达式 C在for循环中,不能用break语句跳出循环体 Dfor语句的循环体中,可以包含多条语句,但要用花括号括起来9设有定义“int x5=l,2,3);”,则数组x占用的内存字节数是【 D 】 A3 B5 C6 D1010若有定义语句“int m, n=2, *p=&m;”,则能完成m=n功能的语句为 【 B 】 Am=*p; B*p=*&n; Cm=&n Dm=&p11数据在计算机存储器内表示

9、时,物理地址与逻辑地址不相同的,称之为【 C 】 A存储结构 B逻辑结构 C链式存储结构 D顺序存储结构12单链表的一个存储结点包含 【 D 】 A数据域或指针域 B指针域或链域 C指针域和链域 D数据域和链域13循环队列的队满条件为【 C 】 Asq.rear+1)maxsize=(sq.front+1)maxsize B(sq.rear+1)maxsize=sq.front+l C(sq.rear+1)maxsize=sq.front Dsq.rear=sq.front14深度为6的二叉树最多有( )个结点【 B 】 A64 B63 C32 D3115用顺序查找法对具有n个结点的线性表查找

10、的时间复杂性量级为【 C 】 AO(n2) BO(nlog2n) CO(n) DO(log2n)16设有语句“intx6=5,4,3,2,1,0),*p=x;”,则值2的表达式为【 A 】 A*(p+4) B*(p+5) C*p+4 D*p+517算法分析的两个主要方面是【 A 】 A空间复杂度和时间复杂度 B正确性和简明性 C可读性和文档性 D数据复杂性和程序复杂性18带头结点的单链表Head为空的判定条件是【 B 】 AHead=NULL; BHead->next=NULL: CHead->next=Head; D均不正确;19一个队列的输入列序为1,2,3,4,则该队列的输出

11、序列是【 B 】 A4,3,2,l B1,2,3,4 C1,4,3,2 D3,2,4,120堆(Heap)是 【 B 】 A完全二叉树 B线性表 C满二叉树 D都不正确21在表长为n的顺序表中,实施顺序查找,在查找不成功时,与关键字比较的次数为【 C 】 An B1 Cn+1 Dn-122下列选项中,合法的C语言保留字是【 C 】 AAUTO BSWIT Celse Dinteger23下列选项中非法的实型常数是【 A 】 A3E1.0 B1.0E3 C.3E-2 D3E-224设有定义“float a=5.0,b=2.5;”,则表达式(int)b+a/b的值是 【 D 】 A3 B4 C3.

12、0 D4.025设int a=10,b=20,c=30;条件表达式a<b?a=15:c的值是【 B 】 A10 B15 C20 D3026一个C程序是由【 B 】 A一个主程序和若干子程序组成 B一个或多个函数组成 C若干过程组成 D若干子程序组成27下列给出的符号串中,可以作为C语言标识符是的【 C 】 Aprintf Bdo CGOTO Dwhile28在c语言中,合法的字符常量是【 B 】 A/A/ B/x10/ C/0a/ Da29以下表达式中与表达式“m=n+”功能完全相同的是 【 A 】 Am=n,n=n+l Bn=n+l,m=n Cm=+n Dm+=n+130若变量a, i

13、已正确定义,且i已正确赋值,非法的表达式是 【 C 】 Aa= =1 B+i Ca=a+=5 Da= (int)(i)32当调用函数时,实参是一个数组名,则向对应形参传送的是【 B 】 A数组的长度 B数组的首地址C数组中每一个元素的地址 D数组中每个元素的值33假定的数据定义语句“floatx;”,能为x输入数据的正确语句是【 D 】 Ascanf(“f,3.5); Bscanf(“x=f ”); Cscanf(“4.2f”,&X); Dscanf(“f'”,&x);34下列程序段的输出结果是【 D 】 int x=2; do prinff(“d,”,x一); whi

14、le(!(-x); A2, B1,0, C2,1, D2,0,35选用数组元素下标时,可能造成程序运行出错的下标是【 B 】 A0 B-1 C正实数 D整型变量36设有语句“char a=“123”,b=1,2,3);”,下列说法正确的是 【 D 】 Aa3是不可知的任意字符 B数组a,b的长度相同 Cb3的值为0 D数组a的长度大于数组b的长度37执行程序段“int x=8;while(-x>6)sprintf(“*”)后的输出结果是【 A 】 A* B* C* D*38设有定义语句:int a=l,b=2,c=3,d=4;执行下列程序段后x的值是 【 A 】 if(a<b)if

15、(c<d)x=10; else if(a<c)if(b<d)x=20; else x=30; else x=40; else x=50; A10 B 20 C 30 D 4039C语言中【 C 】 A不能使用dowhile语句构成循环体。Bdo-while语句构成的循环必须用break语句才能退出。 Cdo-while语句构成的循环,当while语句中的表达式值为零时结束循环。 Ddowhile语句构成的循环,当while语句中的表达式值为非零时结束循环。40以下数组语句中,正确的是【 C 】 Aint a3; Bint b3=0,l,2,3; Cint c1010= 0;

16、Dint d3=l,2, 1,3,0), l;41设有语句“int x8=5,4,3,2,1,*p=x;”,则*(p+3)的值为【 C 】 A5 B4 C3 D242计算机内部数据处理的基本单位是【 B 】 A数据 B数据元素 C数据项 D数据库43在一个具有n个结点的有序顺序表中插入一个新结点并仍然有序的时间复杂度是【 B 】AO(1) BO(n2) CO(n) DO(nlog2n)44设C语言数组Datam+1作为循环队列SQ的存储空间,front为队头指针,real为队尾指针,则执行出队操作的语句为【 D 】 Afrint=front+1;, Bfront=(front+1)m: Cre

17、ar=(rear+1)m; Dfront= (front+1)(m+1);45树最适合用( )来表示【 C 】 A有序数据元素 B无序数据元素 C元素之间具有分支层次关系的数据 D元素之间无联系的数据46长度为12的有序表:Apt, Aug, Dec, Feb, Jan, Jul, Jun, Mar, May, Nov, Oct, Sep,按对半查找法对该表进行查找。在表内各元素等概率情况下查找成功所需要的平均比较次数为 【 B 】A 35/12 B 37/12 C 39/12 D 43/12三、简答题1软件维护工作可分为哪几类维护工作? 答:软件维护工作可分如下四类维护工作:1)改正性维护;

18、2)适应性维护;3)完善性维护;4)预防性维护。2良好的程序设计风格除了将程序文档化和格式化以外,还需要遵循哪些准则?答:良好的程序设计风格除了将程序文档化和格式化以外,还需要遵循以下准则:1)节俭化;2)模块化;3)简单化;4)结构化3用文字简述数据x进栈和退栈操作的基本步骤。答:进栈操作的基本步骤为:1)先判断栈是否已满,若满,则进行上溢处理,否则进行2)。2)栈项指针上移1个节点。3)将x加入到top所指位置。 退栈操作的基本步骤为:1)检查栈是否为空,若栈空,则进行下溢处理,否则进行2)。2)保留被删除元素到变量x中(若不需要保存,则舍去这一步)。3)栈顶指针下移1个节点。4软件测试时

19、,程序中尚未发现的错误的数量往往与在该段程序中己发现的错误的数量成正比。所以软件测试时,除尽早地、不断地进行软件测试外,还应遵循的其它基本原则是什么?答:软件测试时,还应遵循的其它基本原则是:1)设计测试用例时,要给出测试的预期结果。2)开发小组和测试小组分开。3)要设计非法输入的测试用例。4)在对程序修改之后要进行回归测试。5简述哈夫曼树的性质。答:由哈夫曼树的生成过程可得如下性质:1)给定权值的哈夫曼树不唯一,但是WPL,为定值。2)权值越大的节点离根节点就越近。3)哈夫曼树中无度为l的节点。4)哈夫曼树节点总个数刀=2×叶子节点个数一1=2×权值个数1=2n,一1。6

20、用文字简述将内容为x节点加入顺序队列和出队操作的基本步骤。答:将内容为x节点加入顺序队列的基本步骤为:1)先判断队列是否已满,若满则退出,否则进行2)。2)队尾指针下移1个节点位置。3)在队尾指针位置加入x。出队操作的基本步骤为:1)先判断队列是否己空,若空则退出,否则进行2)。2)保留队头元素到x变量中。3)队头指针下移1个节点位置。四、程序分析题1下列程序运行后的输出结果是 m=3 Main() int k,m=0; for(k=0;k<2;k+) m+; if(m/2)continue; m+: printf(/m=%dn/,m);2下列程序运行后的输出结果是 1,6 #inlcu

21、de<stdio.h> Main() int a=l,2,3,4,5,6, *p; p=a; *(p+3)+=2; printf(/d, %dn/, *p, *(p+3);3下列程序运行后的输出结果是s=55 #inlcude<stdio.h> Main() int S, i=l,sum(); for(; i<=10;)i+,s=sum(i); printf(/S=%dn/,s); sum(int k)int x=0;return(x+=k); 4下列程序运行后的输出结果是abcd main() char sl()=/ abcdABCD/,s210; int k=

22、0,j=0; while (s lk!=/A/)s2j+=s 1k+; s2j=0; printf(/sn”,s2);5下列程序运行后的输出结果是DCBAEF void fun(char*pl,int n) chart,*p2; p2=pl+n-1; while(p1<p2) 1=*pl;*p1+=*p2;*p2-=t Main() char*p=/ABCDEF/; fun(p,4); printfsn/,p); 6下列程序运行后的输出结果是 13 Main() intx=11; while(x>10&&x<50) x+ if(x/3)x+; break; e

23、lse continue; printf(/dn/,x); 7下列程序运行后的输出结果是 6 int b=l; int f(int*a) b+=*a; return(b); main() int a=2,b=3: a+=f(&b); printf(/%dn/,a); 8下列程序运行后的输出结果是23 Main() int x4=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6,s=0,k=0; for(;k<4; k+) s+=xkk; printf(/dn/, s) ;9下列程序段的功能是: 计算单链表的表长 int L_lklist(1klist head)

24、p=head; j=0; while(p->next!=NULL) p=p->next; j+; return(j);10下列程序运行后的输出结果是 1,6,3,2,3 #include<stdio.h> main() int j=1 j=3; printf(/%d,/,i+); int i=0; I+=j*2; printf(/d,d,/,i,j); printf(/d,d/,i,j);11下列程序运行后的输出结果是 10 int f(int n) if(n=1)return(1); else return(f(n-1)+1); main() int i,j=0; f

25、or(i=1;i<5;i+)j+=f(i); printf(/dn/,j); 12阅读下列算法,写出其完成的功能是 借助栈将一个带头结点的单链表倒置 void list(LinkedListTP*head) LStackTPIs,p; DataType x; InitStack(&ls); p=head->next; while(p!=NULL) Push(&ls,p->data);p=p->next; p=head->next; while(!EmptyStaek(&JS) Pop(&ls,&x);p->data=x

26、;p=p->next; 五、程序填空题1下面程序是从输入3个数中找出最大数,并输出最大数。 int max(intx, int y, int z) int t; t=x>y? x:y ); retum(t>z? t:z ) main() int a,b,c; scanf(/d,d,d/,&a,&b,&c); prinf(/max=dn",max( a,b,c ); 2以下为冒泡排序的算法,请分析算法,并在 处填充适当的语句。 void bubblesort(int n, list r) for(i=l;i<= n-1 ;i+) flag

27、=1 ; for(j=l;j<=n-1 ;j+) if(rj+1.key<rj.key)flag=0;p=rj;rj=rj+1;rj+1=p;) if(flag)return; 3下列程序的功能是将输入的10个整型数存入一维数组中,并求其中所有素数之和并输出。 main() int x10,sum=0,flag,k,j; for(k=0;k<10;k+)scanf(/d /,&xk); for(k=0;k<l0;k+) if(xk=1) continue ; flag=l; for(j=2;j<= xk/2 ;j+) if(xkj= =0) flag=0

28、;break; if(flag=1) sum+=xk; printf(/d n/,s);4下面程序的功能是输入10个字符和1个字符X,从10个字符中查找x,找到则输出其序号,找不到则输出0。 main() char str10,x,*p; int flag=0; for(p=str;p<str+10;p+)scanf(/c/,p); scanf(/c/,&x); for( p=str ;p<str+10;p+) if(*p=x) flag=1 ;break; if(flag) prinf(/0n/, p-str+1 ); else prinf(/0n/)5以下运算实现在循环队上的出队列,请在 处用适当的语句予以填充。 int OutCyeQueue(Cycqueue Tp*sq,DataType*x) if(sq->fron=sq->rear )error(/队空/);return(o); elsesq->front=(sq->front+1)maxsize ; *x=sq->da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论