二级C语言笔试-404_第1页
二级C语言笔试-404_第2页
二级C语言笔试-404_第3页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

1、二级 C 语言笔试 -404( 总分: 98.00 ,做题时间: 90 分钟 )一、选择题 (总题数: 40,分数: 64.00)1. 对序线性表 (23,29,34,55,60,70,78)用二分法查找值为 60 的元素时,需要比较次数为 ( ) 。A) 1 B) 2 C) 3 D) 4(分数: 2.00 )A.B.C. VD.解析:解析根据二分法查找法需要两次:首先将60与表中间的元素55进行比较,由于 60大于55,所以在线性表的后半部分查找。第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在线性表的前半部分查找。第三次比较的元素是前半部分的

2、中间元素, 即 60,这时两者相等。即查找成功。2. 下列描述中,不是线性表顺序存储结构特征的是 ( ) 。A) 不便于插入和删除 B) 需要连续的存储空间C) 可随机访问 D) 需另外开辟空间来保存元素之间的关系(分数: 2.00 )A.B.C.D. V解析: 解析 线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理 位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不需要另外 开辟空间来保存元素之间的关系。3. 按照“先进先出”组织数据的数据结构是 ( ) 。A) 队列 B) 栈 C) 双向链表 D) 二叉树 (分数: 2.00

3、 )A. VB.C.D.解析: 解析 队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素 的一端叫“队尾”,删除元素的一端叫“队头”,先插入的元素先被删除,是按“先进先出”的原则组织 数据的。4. 如果进栈序列为el,e2,e3,e4,则可能的出栈序列是()。A) e3 , e1 , e4, e2 B) e2 , e4, e3, e1 C) e3 , e4, e1 , e2 D) 任意顺序分数: 1.00 )A.C.D.解析:解析由栈“后进先出”的特点可知: A)中el不可能比e2先出;C)中e3不可能比e4先出,且 el不可能比e2先出;D)中栈是先进后出的,所

4、以不可能是任意顺序;B)中出栈过程如图所示:5. 以下不属于面向对象的基本特点的是 ()。A)分类性B)多态性C)继承性D)封装性(分数:1.00 )A. VB.C.D.解析:解析封装性、继承性、多态性是面向对象的三大特点。6. 算法分析的目的是()。A. 找岀数据结构的合理性 B 找岀算法中输入和输岀之间的关系C.分析算法的易懂性和可靠性D 分析算法的效率以求改进(分数:1.00 )A.B.C.D. V解析:解析算法分析是指对一个算法的运行时间和占用空间做定量的分析,计算相应的数量级,并用时 间复杂和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行 效率。

5、7. 在面向对象方法中,()描述的是具有相似属性与操作的一组对象。A)属性B)事件C)方法D)类(分数:2.00 )A.B.C.D. V解析:解析类(class)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个 实例。8. 数据库DB数据库系统DBS数据库管理系统 DBMS间的关系是()。A) DB 包括 DBS和 DBMS B) DBMS包括 DB和 DBSC) DBS包括DB和DBMS D)没有任何关系(分数:2.00 )A.B.C. VD.解析:解析数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)数据库管理员、硬件平台和软件 平台5个部分组成,可见

6、 DB和DBMS都是DBS的组成部分。9. 以下关于函数的叙述中正确的是 。A) 每个函数都可以被其他函数调用 (包括 main 函数)B) 每个函数都可以被单独编译C) 每个函数都可以单独运行D) 在一个函数内部可以定义另一个函数(分数: 2.00 )A.B. VC.D.解析: 解析 C 语言中,除了主函数外,用户定义的函数或库函数都可以互相进行调用,甚至可以自己调用自己。所以选项 A错误。每个函数可以单独被编译成二进制代码,但不是所有的函数都可以单独运行, 程序的运行需要从主函数 main开始,缺少main函数,则无法运行。所以选项C错误。C语言规定,不能在一个函数内部再定义函数,所以选项

7、D错误。10. 设变量已正确定义并赋值,以下正确的表达式是 。A) x=y*5=x+z B) int(15.8%5)C) x=y+z+5 , +y D) x=25%5.0(分数: 1.00 )A.B.C. VD.解析:解析赋值运算符的左边必须是一个代表某一存储单元的变量名,而A选项中的“ y*5=x+z”部分是非法赋值。求余运算符的对象只能是整型,故选项 B和选项D是错误的。选项C为逗号表达式。11. 下列选项中不合法的 +六进制数是 ( ) 。A) Oxff B) OXll C) Oxlg D) OXabc(分数: 2.00 )A.B.C. VD.解析:解析+六进制是以“ Ox”或“0X&#

8、39;开头的字符串,字符串中只能含有 09这10个数字和a、b、 c、 d、 s 、 f 这 6 个字母。12. 若有定义: int a=4, b=5;float x=3.4,y=2.1;,则下列表达式的值为 ( ) 。(float) (a+b)/2+(int)x%(int)yA) 5.5 B) 55C) 5.500000 D) 55.00000分数: 2.00 )A.B.C. VD.解析:解析在计算(float)(a+b)/2 时,由于通过强制类型转换将(a+b)转换成了 float型,所以应先将2 转换成 float 型,再进行计算,得 4.500000 。在计算 (int)x%(int)

9、y 时,先将 x 和 y 通过强制类型转换成 int 型,再进行求余运算,得 1。 又因为 4.500000 是 float 型,所以将 1和它相加时,先将 1换成 float 型,再计算,得到 5.500000 。 知识扩展 类型转换的一般规则是:低级类型服从高级类型,并进行相应的转换。数据类型的级别由低到 高的排序表示为: chart int unsigned long afloat double。13. 若 a、b、c、d 都是血型变量且都已经正确赋初值,则下列不正确的赋值语句是 ( ) 。A) a+d ; B) a+ ; C) a=b=c=d=100 ; D) a=(b=3)+(d=5

10、) ;(分数: 2.00 )A. VB.C.D.解析:解析C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C)、选项D)正确;在选项B)中,a+是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式;在选项 A)中,a+d是一 个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。14. 设 a、b、C、d、m n 均为 int 型变量,且 a=5、b=6、c=7、d=8、m=2 n=2,则逻辑表达式(m=a> b)&&(n=c > d)运算后,n的值为。A) 0 B) 1 C) 2 D) 3(分数: 1.00 )A.

11、 VB.C.D.解析: 评析 C 语言中比较表达式的运算结果为 0或 1。 0代表不成立, 1 表示成立。15. 假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0; x=12;if(!a)x-;else x=5 ;if(c) x=3;else x=4 ;A) 11 B) 4 C) 12 D) 3(分数: 2.00 )A.B. VC.D.解析:解析本题考查if else语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句, x-,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=416. 若有以下程序段,w和k

12、都是整型变量:|w=k:LB: if(w=0)go to LE ;w- :printf("*")goto LB :LE;|则不能与上面程序段等价的循环语句是 ( ) A for(w=k ; w!=0;w-)printf("*");B for(w=k ; w;-w)printf("*");C w=k:while(w-!=0)printf("*");D w=k;w+;dow- ; printf("*");while(w!=0)(分数: 1.00 )A.B.C. VD.解析:解析当循环结束时,w的值应

13、为-1,而其他选项中w的值为0,故选择C选项。17. 下列程序的输出结果是 ( ) 。int f1(int x,int y)return x> y?x:y;int f2(int x,int y)return x> y?y:x;main()int a=4,b=3,e=5,d=2,e,f,g;e=f2(f1(a,b),f1(e,d); f=f1(f2(a,b),f2(e,d);g=a+b+c+d-e-f;printf("%d,%d,%d/n",e,f,g);A) 4,3,7 B) 3,4,7 C) 5,2,7 D) 2,5,7(分数: 2.00 )A. VB.C.D

14、.x> y?y:x;解析: 解析 根据函数 int f1(int x,int y)return x>y?x:y;) 和 int f2(int x,int y)return 的定义可知,如果 x>y 成立,则函数 f1 返回 x 的值,函数 f2 返回 y 的值。所以 f1(a,b)=4,f1(c,d)=5,f2(a,b)=3,f2(c,d)=2故 e=f2(4,5)=4,f=f1(3,2)=3,g=4+3+5+2-4-3=718. 若变量已正确定义,下列正确的程序段是 ( ) 。A) while(ch=getchar()='/N')putchar(ch);B)

15、 while(ch=getchar()='/n')putchar(ch);C) while(ch=getehar()!='/N')putchar(ch);(分数: 2.00 )A.B.C.D. V解析:解析本题考查两个知识点:C语言用'/n'这个字符常量表示换行;getchar终端输入一个字符,当遇到换行时结束输入。19. 以下程序段的输出结果是 。main()char s110,s210 ,s310 ;scanf("%s" , s1) ; gets(s2);gets(s3) ; puts(s1) ; puts(s2) ; p

16、uts(s3) ;输入数据如下:(此处v CR>代表回车符)aaav CR>bbbv CR>A) aaabbbB) aaabbbC) aaa/0bbb/0D) aaabbb(分数: 2.00 )A.B. VC.D.解析: 评析 scanf 是标准输入函数,在输入字符串 aaa 时,实际的内容为“ aaa/0 ”, 自动加入的; gets 的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“ 行符。20. 有以下程序#include v stdio.h >main()int a=1,2,3,4),y,*p=.a3 ;-p ; y=*p ; printf(&q

17、uot;y=%d/n" , y) ;程序的运行结果是 ( ) 。Ay=0 By=1 Cy=2 Dy=3函数的作用是从/0”是由系统/0”代替换分数: 1.00 )A.B.C.D. V解析: 解析 本题中首先定义了一个一维数组和指针,接着将数组第 4 个元素的地址赋予 *p ,接着使指针 p 指向了数组的第三个元素,并将数组第三个元素的值 3 赋予 y 。21. 下面程序main()int x=100,a=10,b=20,okl=5,ok2=0 ;if(a v B)if(b!=15)if(!ik1) x=1;else if(ok2)x=10;x=-1 ;printf("%d/

18、n",x) ;的输出是 。A) -1 B) 0 C) 1 D) 不确定的值分数: 2.00 )A. VB.C.D.解析:评析第一判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断如此循环, 在打印输出语句的前行,程序绐变量 x 赋了值,为 -1 ,所以,无论前期如何变化,最后的 x 值依然为 -122. 以下正确的函数头定义形式是A) double fun(int x, int y) B) double fun(int x; int y)C) double fun(int x, int y) ;D) double fun(int x , y) ; (分数: 2.00 )A

19、. VB.C.D.解析: 解析 形式参数之间是以逗号“,”隔开,且每个变量均需说明其数据类型,圆括号后面不能有分 号。只有选项 A 符合要求。23. 若执行下述程序时,若从键盘输入 6和 8,结果为 ( ) 。main()int a , b, s; scanf("%d%dt" , &a, &b);s=a:if(s=b)s*=s ;printf("%d" , s) ;A) 36 B) 64 C) 48 D) 以上都不对(分数: 2.00 )A.B. VC.D.解析: 解析 首先通过 scanf 函数把从键盘读入的数据赋给变量 a 和 b,

20、if 语句判断如果 a 和 b 不等,执 行 s=s*s=64 。24. 有以下程序main()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,j,k,t;for(i=0;iv 4;i+)for(j=0;jv 3;j+)fof(k=j+1;k v 4;k+)if(aji > aki)t=aji;aki;aki=t;/*按列排序 */for(i=0;i v 4;i+)printf("%d,',aii);程序运行后的输出结果是(分数: 2.00 )A. VB.C.D.解析: 解析 奉题利用多重 for 循环的嵌套来实现对二维数组元素的按列

21、排序。利用最外层循环来实现对 列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。25. 下列程序的运行结果为 ( ) 。#include v stdio h>void abc(char*str)int a,b,i,j ;for(i=j=0;stri!='/0';i+)if(stri!='a')strj+=stri ;strj='/0';void main()char str="abcdef" ;abc(str) ;printf("str%s" ,str) ;A

22、) str=bcdef B) str=abcdefC) str=a D) str=ab(分数: 1.00 )A. VB.C.D.解析:解析本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母 a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。26. 变量m的值为8,m的地址为1010,若欲使p为指向m的指针变量,则下列赋值正确的是 ()。A) &m=8 B) *p=8 C) *p=1010 D) p=&m(分数: 2.00 )A.B.C.D.V解析: 解析 指针变量是通过指向变量地址来指定变量值的。这里只要取m的地址赋给p,即可实现使p为指向m的指针

23、变量。27. 有以下程序:#include < stdio.h >main()int a=2, 3, 5, 4, i ;for(i=0 ;i < 4;i+)switch(i%2) case0:switch(ai%2) case0:ai+ ;break ; case1:ai-;break ; case1:ai=0 ;for(i=0 ;i < 4;i+)printf("%d", ai) ;printf("/n")程序运行后的输出结果是 ( ) 。A 3344 B2050 C3040 D0304(分数: 1.00 )A.B.C. VD.

24、解析: 解析 本题考查嵌套分支语句,共输出 4个值。当 i=0 时, i%2 取余还是 0,则执行 case 0 语句, 继续 switch 语句,此时 i 为 0,数据的下标是从 0 开始的, a0 的值为 2,则 a0%2=0 ,继续执行 case 0, 数组 a0+ ,值变为 3,执行 break 跳出第二重 switch 语句。出来后继续执行 break ,跳出第一重 switch 语句,继续循环;输出第一个值为3。i+后值为1,i%2=1%2取余后值为1,执行case 1,将0赋给a1,退出switch语句,输出第二个值为 0o i+后值为2, i%2=2%2取余后值为0, a2的值

25、为5,则a2%2=1, 继续执行 case 1 ,数组 a2- ,值变为 4,执行 break 跳出第二重 switch 语句。出来后继续执行 break , 跳出第一重switch语句,继续循环;输出第三个值为 4。i+后值为3,i%2=3%2取余后值为1,执行case 1,将0赋给a3,退出switch语句,输出第四个值为0。结果为3 0 4 0。28. 若一个名部变量的定义形式为 static int x;, 那么,其中 static 的作用应该是 。A) 将变量存储在静态存储区B) 使变量 X 可以由系统自动初始化C) 使 x 只能在本文件内引用D) 使 x 的值可以永久保留(分数:

26、2.00 )A.B.C. VD.解析:评析事实上,无论有无Static修饰,外部变量都具有 A、B和C三种特性。作为一种修饰,static 仅是限制此类型外部变量的引用范围C只能在定义它的文件范围内使用。29. 若有以下说明和语句 :int c4 5 ,( * p) 5;p=e;能够正确引用c数组元素的是()。A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p0+2)(分数: 1.00 )A.B.C.D. V解析:解析(*p)5 中p是一个行指针,指向一个包含5个元素的一维数组,p的值是该一维数组的首地址。当用行指针访问二维数组时,行指针每增加 1,表示指针指向二维数组的下

27、一行,此题中的 p+i 将 指向数组的第i行。选项A)的意思是指向数组c的第1行,不是引用c数组的元素;选项B)中p+3是指向 数组元素的第3行,。(P+3)是指第3行第0个元素的地址;选项C)可由对选项A)、选项B)的解释知,它指的是第1行第3列元素的地址;选项 D)中p0 +2是指第0行第2列元素的地址,再加个*就表示第0 行第 2 列的元素,即 c02。30. 下列程序的运行结果为 ( ) 。群 include < stdio.h >void abc(char*str)int a , b, i , j ;for(i=0 ; stri!='/0; i+)if(stri!

28、= : 'a')strj+=stri ;strj='/0';void main()char str="abcdef" ;abc(str) ;printf("str=%s" , str) ;分数: 2.00 )A. VB.C.D.解析:解析本题考查函数调用是的参数传递。通过函数abc的执行,将字符串中的字母 a去掉,保留剩下的,由于是通过指针调用,所以改变字符串的结果。31. 以下语句或语句组中,能正确进行字符串赋值的是 。A) char*sp ; *sp="right!" ;B) char s10;s=

29、"right!";C) char s10;*s="right!";D) char*sp="right!" ;(分数: 2.00 )A.B.C.D. V解析:解析本题的考点是C语言的数组和指针。C的数组名是一个特殊类型的指针,固定指向数组第一 个元素的位置,运行过程中不能再改变其指向。因此选项B、C都是错误的。指针可以指向任何单元,但选项 A 是错误的, 因为赋值语句“ *sp="right!" ”是错误的, 正确写法是“ sp="right!" ”。 而对于选项 D, 由于“ char * sp

30、="right!""是定义指针同时赋初值,因此是正确的。32. 下面程序的输出结果是#include <stdio . h>#include < string . h >main()char*p1="abc" , *p2="ABC", str50="xyz";strcpy(str+2 , streat(p1 , p2) ;printf("%s/n" , str) ;A) xyzabcABC B) zabcABC C) xyabcABC D) yzabcABC(分

31、数: 1.00 )A.B.C. VD.解析: 解析 本题考查的重点是拷贝字符串使用 strcpy() 函数,该函数的调用方式是: strcpy( 字符 数组,字符串 ),其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完 整地复制到“字符数组”中,字符数组中原有的内容被覆盖。使用该函数时注意:字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志“/0” 一起复制;不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数处理。另外,本题还考查连接字符串的 strcat() 函数,其调用方式是: strcat( 字符数组,

32、字符串 ) 。 功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原 来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接 后的目标字符串; 否则, 会因长度不够而产生问题; 连接前两个字符串都有结束标志“ /0”, 连接后“字 符数组”中存储的字符串的结束标志“ /0”被舍弃,只在目标串的最后保留一个“ /0”。33. 有以下程序 :#include < stdio, h >#include < string, h >

33、struet STUint nam;float TotalSeore;Jvoid f( strnct STU p)struct STU s2 = 20044,550 ,20045,537 ;p.num = s 1. num; p.TotalScore = s 1. TotalScore;main( )struct STU s2 = 20041,703 ,20042,580;f(s0 );printf( "%d %3. Of/n" ,s0.num,s0.TotalSeore);程序运行后的输出结果是 ( ) 。A) 20045 537 B) 20044 550 C) 2004

34、2 580 D) 20041 703(分数: 1.00 )A.B.C.D. V解析:解析函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量 s0中的值传给了形参变量P,在函数f中,虽然改变了 p中的内容,但其改变对 main函数中s0的值不产生影响, 所以 main 函数中输出 s0 的数据仍然是 main 函数中初始化时的数据。34. 下列判断正确的是 ( ) 。A) char a ="ABCD"等价于 char*a;*a ="ABCD"B) char str10= ABCD"等价于 char str10; str =

35、"ABCD"C) char*s = "ABCD"等价于 char s;*s = "ABCD"D) char c5="ABCD",d5 = "ABCD"等价于 char c5= d5 = "ABCD"(分数: 2.00 )A.B.C.D. V解析:解析a = "ABCD'书写错误,因为“=”左边不能出现常量;数组名 s是代表s数组首地址的地址 常量,而不是变量;字符串只有在定义时维数可以省略。35. 设有以下定义和语句int a32=(1,2,3,4,5),*

36、p3;P0=a1;则*(P【0+1)所代表的数组元素是。A) a01 B) a10 C) a11 D) a12分数: 1.00 )A.B.C. VD.解析: 解析 指针 p0 指向了数组 a 的第二行,即 a1 ,此时指针地址加 1,即指向了 a 数组第二行的 第二个元素,因此,所代表的元素就是 a11 。36. 下列叙述中不正确的是 ( ) 。A) 在 C 语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B) 在 C 的函数中,最好使用全局变量C) 外部变量可以在函数之间传递数据D) 自动变量实质上是一个函数内部的局部变量(分数: 2.00 )A.B. VC.D.解析: 解

37、析 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数 被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分 配固定的内存单元,在程序运行的自始至终都占用固定的单元。在内存不确定的情况下,最好使用全局变 量。37. 有以下程序 :#include < stdio.h >fun( char p 10)int n=0,i;for(i=0;i < 7;i +)if(pi0 ='T') n+;return n;main( )char sir 10 = "Mon" ,"T

38、ue" ,"Wed" ,"Thu" ,"Fri" ,"Sat" ,"Sun" ;prlnff(" % d/n" ,fun(str) );程序执行后的输出结果是 ( ) 。A) 1 B) 2 C) 3 D) 0(分数: 1.00 )A.B. VC.D.解析:解析数组名str作为函数参数将实参数组的起始地址传给形参数组p,当形参数组发生变化时主函数中的实参数组中的值也随之发生变化。调用fun函数执行for循环语句后,n为2,返回给main函数输出。38. 有以下程序:#

39、include < stdio h>fun(int x , int y , int z)z=x*y ;main()int a=4 , b=2, c=6 ;fun(a , b, c) ;printf("%d" , c) ; 程序运行后的输出结果是 ( ) 。A) 16 B) 6 C) 8 D) 12(分数: 1.00 )A.B. VC.D.解析: 解析 本题考查函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变 不能影响实参值,即本题中 c 的值未改变,仍然是6 。39. 有以下程序:#include < stdio.h >mai

40、n ( )int i;for(i =0;i< 3 ;i + )switch (i)case 0: printf(" % d" ,i);case 2: printf(" % d" , i);default: printf( "% d" , i); 程序运行后的输出结果是 ( ) 。A) 022111 B) 021021 C) 000122 D) 012(分数: 1.00 )A.B.B. VD.解析: 解析 程序中没有使用 break 终止 switch 语句的执行。当 i:0 时,执行第一个 case 语句,因为它 后面没有bre

41、ak,所以一直到执行完 default语句结束,输出3个0,再执行下一循环。所以只有选项 C) 正确。40. 读程序:#include < stdio.h >f(int b,int n)int i,r;r=1;for(i=0;i < =n;i+) r=r*bi;return r;main()int x,a=2,3,4,5,6,7,8,9;x=f(a,3);printf("%d/n",x);上面程序的输出结果是 ( ) 。A) 720 B) 120 C) 24 D) 6(分数: 2.00 )A.B. VC.D.解析:解析 本题考查函数的调用。 函数 f 的功

42、能是将 b 小的第 1到 n+1 个数组元素的值进行相乘运算, 然后返回其结果。由于实参 3传给形参n,所以f的返回值为x=2*3*4=5=120。二、 填空题 (总题数: 15,分数: 34.00)41. 若按功能划分,软件测试的方法通常分为白盒测试方法和 U /U 测试方法。(分数: 2.00 )填空项 1: (正确答案:黑盒)解析: 解析 软件测试的方法有三种:动态测试、静态测试和正确性证明。设计测试实例的方法一般有两 类:黑盒测试法和白盒测试法。在使用黑盒法设计测试实例时,测试人员将程序看成一个“黑盒”,即不 关心程序内部是如何实现的,只是检查程序是否符合它的“功能说明”,所以使用黑盒

43、法设计的测试用例 完全是根据程序的功能说明来设计的。42. 某二叉树中度为 2 的结点有 1 8个,则该二叉树中有 U /U 个叶子结点。(分数: 2.00 )填空项 1: (正确答案: 19)解析: 解析 根据二叉树的性质:在任意一棵二叉树中,度为。的结点 (即叶子结点 ) 总是比度为 2 的结点 多一个。本题中度为 2 的结点数为 18,故叶子结点数为 18+1=19个。43. 数据结构包括数据的逻辑结构、数据的 U /U 以及对数据的操作运算。(分数: 2.00 )填空项 1: (正确答案:存储结构)解析: 评析 数据结构包括 3 个方面;即数据的逻辑结构、数据的存储结构及对数据的操作运

44、算。44. 某二叉树中度为 2 的结点有 1 8个,则该二叉树中有 1 个叶子结点。(分数: 2.00 )填空项 1: (正确答案: 19)解析: 解析 在任意一棵二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。45. 数据库设计分为以下六个设计阶段:需求分析阶段、 U /U 、逻辑设计阶段、物理设计阶段、实 施阶段、运行和维护阶段。(分数: 2.00 )填空项 1: (正确答案:概念设计阶段)解析: 解析 数据库设计分为以下六个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设 计阶段、实施阶段及数据库运行和维护阶段。46. 若整型变量 a 和 b 中的值分别为

45、 7 和 9,要求按以下格式输出 a 和 b 的值: a=7b=9请完成输岀语句:printf(”", a, b);(分数:2.00 )填空项1: (正确答案:a=%d/nb=%d/n)解析:解析“a=”、 “b=”表示按原样输岀,“d表示按十进制整型格式输岀数据,“/n ”表示换行。47. 以下程序运行后的输岀结果是 。main()int i=10, j=0 ;doj=j+i ; i-;while(i > 2);printf("%d/n" , j);(分数:4.00 )填空项1: (正确答案:52)解析:解析当i=10时,执行“ j=j+i ; i-;&q

46、uot;后j为10, i为9,此时while循环成立;接着当i=9 时,执行“ j=j+i ;i-;"后j为19,i为8,此时while :循环成立,接着执行 do语句,当i为3时,此时while循环成立,接着执行 do语句“j=j+i ; i-;"后j为52, i为2,此时while循环不成立,退 岀循环输岀j的值为52,故填52。48. 在C语言中,当表达式值为0时表示逻辑值“假",当表达式值为(8)时表示逻辑值“真”。(分数:2.00 )填空项1: (正确答案:非0)解析:解析在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为非零时表示逻辑值“真”。

47、49. 有以下函数void prt(char ch, int n)int i;for(i=1; i < =n; i+)printf(i%6!=0? "%c": "%c/n", ch);执行调用语句prt('*', 24);后,函数共输出了 行*号。(分数:2.00 )填空项1: (正确答案:4)解析:解析分析程序,将n=24带入程序,可知在124的数中存在6、12、18、24四个可以被6整除 的数,所以输岀4行*号。以下isprime函数的功能是:判断形参 a是否为素数,是素数,函数返回1,否则返回0。请填空。int isprime(int a)int i ;for(i=2 ; i < =a/2 ; i+)if(a%i=0)U /U;U /U;(分数: 4.00 )填空项 1: (正确答案: return 0 )解析:填空项 1: (正确答案

温馨提示

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

评论

0/150

提交评论