二级C语言笔试-91_第1页
二级C语言笔试-91_第2页
二级C语言笔试-91_第3页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、二级 C 语言笔试 -91( 总分: 100.00 ,做题时间: 90 分钟 )一个完整的 C 语言程序包含 ( ) 。一、选择题 (总题数: 50 ,分数: 60.00)1.一个或多个函数,其中唯一不可缺少的函数是( 分数: 1.00 )A. 库函数B. scanf 函数C. main主函数 VD. printf 函数解析: 解析 一个完整的 C 程序有且仅有一个主函数 (main() 函数) ,主函数可以调用其他各种函 数,但其 他函数不能调用主函数, C 程序从主函数开始执行, 并在主函数中结束整个程序的运行。 应选项 C 正确。2. 程序中头文件 type1.h 的内容是 ( ) 。#

2、define N 5#define M1 N*3程序如下:#define "type1.h"#define M2 N*2main()int i;i=M1+M2 ; printf("%d/n",i);程序编译后运行的输出结果是 ( ) 。( 分数: 1.00 )A.10B.20C.25 VD.30解析: 解析 i=M1+M2=N*3+N*2=5*3+5*2=253.下面程序的输出结果是 ( ) 。main()struct m1int a;int b;en2=1,3,2,7); printf("%d/n",en0.b/en0.a*en1.

3、( 分数: 1.00 )A. ;A) 6B) 0C) 1D Ven0.b/en0.a*en1.a=3/1*2=6解析: 解析 en2 是结构体类型的数组,4. 以下选项中合法的实型常数是 ( )(分数:1.00 )A. 5E2.0B. E-3C. .2E0 VD. 1.3E解析:解析在C语言中,实数有两种表示形式:小数形式与指数形式。小数形式的实数由整 数局部、小数点和小数局部组成(必须要有小数点)。指数形式字母e(E)之前必须有数字,且e或E后的指数必须为整数。选项A中,5E2.0中E后面的2.0不是整数;选项 B中,E前面没有数字;选项D中,E后面没有数字,只有选项C正确。5. 假设有如下

4、程序:mai n()static char*a3="123","456","789");char *b;b=a; +b; printf("%s,%s/n",*a,*a+1); printf("%s,%s/n",*b,b1);那么程序运行后的输出结果是()。(分数:1.00A. 123 ,4 56,456 , 789B. 123,23456 , 56C. 123 ,23456 , 789 VD. 123 ,456456 , 56解析:解析a为指针数组,a0即数组a的数组名指向字符串"12

5、3"的首地址,输出*a为"123", *a+1将指针下移1个存储单元,输出字符串为23 。 a1指向字符串"456"的首地址,a2指向字符串"789"的首地址。b为指针的指针,它的值为数组a的首地址。6. 假设有如下程序:int sub(i nt m)if(m=1|m=0) retur n 2;else return(sub(m-1)*sub(m-2);mai n()int n;sca nf("%d",&n);prin tf("%d",sub( n);如果从键盘输入4V回车,那

6、么程序运行后的输出结果是()。(分数:1.00 )A. 8B. 16C. 24D. 32 V解析:解析此题的sub()函数是一个递归函数,当参数m为1或0时返回2,否那么返回sub(m-1)*sub(m-2)。 所以sub(4)递推下来就是sub(4)=sub(3)*sub(2)=sub(2)*sub(1)*sub(1)*sub(0)=sub(1)*sub(0)*2*2*2=25( 案是 D。7. 执行下面程序时,假设输入1、-5 、6,那么输出结果为 ( ) 。上标 )=32 。所以正确答# include < stdio.h ># include < math.h >

7、;# define disc(a,b,c) b*b-4*a*c main()float x1,x2; int a,b,c;scanf("%d,%d,%d",&a,&b,&c); x1=(-b+sqrt(disc(a,b,c)/(2*( 分数: 1.00 )A. ;x2=(-b-sqr解析:解析此题是使用带参数的宏来求解一元二次方程的两个根。表达式X1 =(-b+sqrt(disc(a,b,c)/(2*a) 宏展开后为:X1=(-b+sqrt(b*b-4*a*c)/(2*a)=(5+sqrt(25-24)/2=6/2=3 。表达式 X2=(-b-sqr

8、t(disc(a,b,c)/(2*a) 宏展开后为: X2=(-b-sqrt(b*b-4*a*c)/(2*a)=(5-sqrt(25-24)/2=4/2=2 。所以程序输出结果为 3.0 , 2.0 ,应该选择B。8. 以下不正确的定义语句是 ( ) 。( 分数:1.00 )A. double X5=2.0,4.0,6.0,8.0,10.0;B. int y5=O,1,3,5,7,9; VC. char c1='1','2','3','4','5'D. char c2='/X10','/Xa

9、','/X8'解析: 解析 选项 B 中初值列表中的初值个数超过了数组包含的元素的个数。9. 定义如下变量:int n=10;那么以下循环的输出结果是 ( )while(n > 7) -n;printf("%d/n",n);( 分数: 1.00 )A. 1098B. 987 VC. 10987D. 9876解析: 解析 第 1 次循环, 10>7, -n=9 ,输出 9。第 2 次循环, 9>7,-n=8 ,输出 8。第 3 次循环, 8 >7,-n=7 ,输出 7。10. 假设执行下述程序时,从键盘输入的数据是 3 和 6,

10、那么程序的输出结果是 ( ) 。#include < stdio.h > void main() int X,y,z;scanf("%d%d",&X,&y); z = y + X;if (x <y)z = y + x; printf("%d",z);( 分数: 1.00 )A. 9B. 3 VC. 0D. 有语法错误解析: 解析 变量 x 得到数据 3,变量 y 得到数据 6。 z=6+3=9 。 x< y 即 3<6 关系表达式的值 为 1,执行 z=y-x=6-3=3 。最后输出 z 的值为 3。11.

11、有以下程序:main()int a=5,b=4,c=3,d=2;if(a > b > c)printf("%d/n",d);else if(c-1 > =d)=1)printf("%d/n",d+1);elseprintf("%d/n",d+2)执行后输出结果是 ( ) 。( 分数: 1.00 )A. 2B. 3 VC. 4D. 编译时有错,无结果解析: 解析 C 语言规定 else 总是和离它最近的 if 语句配对。故第一个 else 和第一个 if 配对,第 二个 else 和第二个 if 配对。首先计算第一个

12、if 后面的表达式 a>b>c ,表达式 a>b 为 1,表达式 1>c 为 0, 所以执行 else 后面的语句。 先执行 if 后面的表达式, c-1 > d 为真, 值为 1。 1=1 为真, 执行 primf 语句。 所以, B 选项为所选。12. 假设有说明: int*p,m=5,n;, 以下正确的程序段是 ( ) 。( 分数: 1.00 )A. p=&m;scanf("%d",&p)B. p=&n;scanf("%d",&p)C. scsnf("%d",&

13、;p) p=&n;D. p=&n;p=&m; V&,当给指针变量赋值时是取变解析: 解析 p 为指针型变量,在输入函数的地址列表中不用 量的地址赋给指针变量, &为取地址运算符,因此只有选项D 正确。123 V空格456 V空格789 V回车,输出结果是 。main13. 执行以下程序时输入: char s100;int c, i;scanf("%c",&c); scanf("%d",&i); scanf("%s",s); printf("%c,%d,%s/n"

14、;,c,i,s);(分数: 1.00 )A. 1,456,789B. 1,23,456 VC. 1,23,456,789D. 123,456,78923,遇到空格解析: 解析 第一个输入语句只接收一个字符 '1' ;第二个输入语句接收一个整数 停止;第 三个输入语句接收一个字符串 "456" ,遇到空格停止。14. 以下描述正确的选项是 分数:1.00 )A. C 语句能嵌套定义函数,但不可以嵌套调用函数B. C 语句不能嵌套定义函数,也不可以嵌套调用函数C. C 语句能嵌套定义函数,也可以嵌套调用函数D. C 语句不能嵌套定义函数,但可以嵌套调用函数 V解

15、析: 解析 C 语句不能嵌套定义函数,但可以嵌套调用函数。15. 以下函数值的类型是 ( ) fun (float x)float y;y=3*x-4;return y;分数: 1.00 A. int VB. 不确定C. voidD. float解析: 解析 函数定义时如果数据类型默认,那么默认为 int 。函数中如果有“ retum 表达式 : 语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达 式转换为函数值 的类型作为返回值,因此此题的函数值类型是 int 。16. 以下表达中错误的选项是 。分数: 1.00 A. 一种数据的逻辑结构可以有多种存储结构B

16、. 数据的存储结构与数据处理的效率无关 VC. 数据的存储结构与数据处理的效率密切相关D. 数据的存储结构在计算机中所占的空间不一定是连续的解析: 解析 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、 链接、索 引等,选项 A 和选项 D 正确。采用不同的存储结构,其数据处理的效率不同,因此,在处理数据时选择合适的存储结构很重要,选项c正确,选项B错误,应为此题正确答案17. 以下属于不合法的main函数命令行参数表示形式的是 ()。(分数:1.00 )A. mai n(i nt argvB. ma in (i nt argvC. main(int argv, cha

17、r*argc)D. main(int argc,char*argc) V , char*arc) , char*argv)解析:解析main函数通常可用两个参数,参数名可由用户自定,但类型是固定的,第一个参数必须是 整型,第二个参数是一个指向字符型的指针数组的指针,可以表示为*arc或*argc。4个选项中只有选项B不符合。18. 以下表达中正确的选项是()。(分数:1.00 )A. 接口复杂的模块,其耦合程度一定低B. 耦合程度弱的模块,其内聚程度一定低C. 耦合程度弱的模块,其内聚程度一定高VD. 上述三种说法都不对解析:解析模块之间的连接形式以及模块接口的复杂性,是影响模块耦合的主要因素

18、。接口复杂的模块,其耦合程度要比接口简单的的模块强;耦合程度弱的模块,其内聚程度一定高。19. 以下程序段输出的字符串长度为()。prin tf("aaa/'ccc/bddd/'");(分数:1.00 )A. 11B. 12C. 13 VD. 17解析:解析转义字符有1个、2个/'、1个/b,普通字符有3个a、3个c、3个d,共13个字符。20. x、y、z被定义为int型变量,假设从键盘给x、y、z输入数据,正确的输入语句是()。(分数:1.00 )A. INPUTx、y、z;B. scanf("%d%d%d",&x,&

19、amp;y,&z);C. scanf("%d%d%d",x,y,z);D. read("%d%d%d",&x,&y,&z);解析:解析scanf()函数要求将输入的数据存入变量所在的地址。选项A不是C语言中的输入语句,故 选项A不正确;选项 C中输入的是变量字符串而不是地址字符串,不满足scanf()函数要求将输入的数据存入变量所在的地址,应选项C不正确;选项 D不是C语言中的输入语句,应选项 D不正确:所以,4个 选项中选项B符合题意。21. 以下程序的输出结果是()。mai n()int a=-1 ,b=4 ,k;k=

20、(+a < 0)&&!(b- < =0); prin tf("%d%d%d/n"m,k,a,b); 分数: 1.00 A. 104B. 103C. 003D. 004 V解析:解析&&的优先级高于=,先计算&&左侧的表达式+a<0。先对a加1再与0比拟大小, a=-1+1=0 , +a<0 为假即 0, &&左侧的表达式的值为 0,不再计算 &&右侧的表达式的值,因此b 的值不变仍然为 4,整 个逻辑表达式的值为 0,那么 k 被赋值为 0。输出的结果为 004。22.

21、以下关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是 。 分数: 1.00 A. 选择B. 连接 VC. 投影D. 并解析: 解析 两个关系的笛卡尔积中的属性个数是两个原关系中的属性个数之和。即两个关系经连接运算 后得到的新关系中属性个数多于原来关系中属性个数。23. 在C语言中,合法的长整型常数是。 分数: 1.00 A. OL VB. 4962710C. 324562&D. 216D解析:解析长整型常数可用十进制、八进制、十六进制表示,要求在数后边加上1或L作为后缀 必须加上后缀,否那么无法判断该常量是短整型、整型、无符号整型还是长整型。选项 B、 c、 D

22、 中都无后缀 1 或L,应选项B、c、D都缺乏合法的长整型常数,只有选现A中有后缀L,是合法的长整型常数。24. 下面对对象概念描述错误的选项是 。分数: 1.00 A. 任何对象都必须有继承性 VB. 对象是属性和方法的封装体C. 对象间的通信靠消息传递D. 操作是对象的动态属性解析: 解析 继承是使用已有的类定义作为根底建立新类, 已有的类可当成基类来引用,那么新类相 应可当 成派生类来引用。但并非所有对象都必须有继承性。选项A 说法错误。25. 设有如下定义: struck sk int a;float b;data;int *p;假设要使 p 指向 data 中的 a 域,正确的赋值语

23、句是 。(分数: 1.00 )A. p=&a ;B. p=data.a ;C. p二&data.a ; VD. *p=data.a ;解析: 解析 data 是一结构体变量, a 是它的成员,因此引用 a 域的正确方法是: data.a ,取 它的地址赋值给指针变量 p的语句应该是:p二&data.a。选项A将a的地址直接赋给了 p,而忽略了 a 为结构体内部的 一个成员, 不是一单独的变量, 应选项 A 不正确;选项 B 在 p=data.a 表 达式中右边为一个结构体变量的成 员不是地址,而左边为一指针应该将一地址赋给它,应选项B不正确。选项 D 表达式 *p=da

24、ta.a 是将结构体变量中的成员 a 的值赋给指针 p 所指向的变量值, 而 不是使指针 p 指向 data 中的 a 域,应选项 D 不正确。26. 设有如下定义:int a=4;那么计算表达式“a+=a- a*a 后的值是()分数: 1.00 A. 0B. -12C. -24D. -8 V解析: 解析 a+=a-a*a 等价于 a=a+a-a*a=4+4-4*4=-8。27. 在关系模型中, 。(分数: 1.00 )A. 为了建立一个关系,首先要构造数据的逻辑关系B. 表示关系的二维表中各元组的每一个分量还可以分成假设干数据项C. 一个关系的属性名表称为关系模式 VD. 一个关系可以包括多

25、个二维表解析: 解析 在关系模型中,只要将数据按照一定的关系存入计算机,也就是建立关系,不需要 事先构造数据的逻辑关系,选项 A 错误;表示关系的二维表最根本的要求是,表中元组的每一个 分量必须是不可分 的数据项,即不允许表中再有表,选项 B 和选项 D 错误。28. 有如下程序段:int a=14,b=15,x;char c='A'x=(a&&b)&&(C <'B') ;执行该程序段后, x 的值为 ( ) 。(分数: 1.00 )A. 1 VB. 0C. falseD. true解析:解析a=14 , b=15,第一个&

26、amp;&两侧均为非零值。c='A',表达式cV'B'的值为真即1,第二个 &&两侧也均为非零值。表达式 (a&&b)&&(c <'B') 的值为 1,赋值给变量 x 。29. 语句“ a=2;p=&a;b=*p+; 执行后的结果是 ( ) 。分数: 1.00 A. a=3 b=3B. a=2 b=2 VC. a=2 b=1D. a=2 b=3解析:解析执行p=&a ;,将变量a的地址赋给指针变量p,运算符*和+的优先级相同,都具有自右向 左的结合性,p+是先使用p的值

27、再对p加1,贝U计算*p,即取p所指向的存储单元的值2,赋值给b,再对p的值加1。输出结果为a=2 b=2。30. 在结构化设计方法中生成的结构图SC中,带有箭头的连线表示分数:1.00 A. 模块之间的调用关系VB. 程序的组成成分C. 控制程序的执行顺序D. 数据的流向解析:解析结构图中用带有箭头的连线表示模块之间的调用关系31. 假设有如下程序:int m=1;mai nint t=0,s=0;int m=4;s+=m;t+=m;prin tf"%d,%d/n",s,t;那么程序运行后的输出结果是 。(分数: 1.00 )解析: 解析 int m=4;s+=m;32.

28、设有定义:10ng x=-123456L ,那么以下能够正确输出变量x值的语句是分数:1.00 A. printf("x=%d/n",x);B. printf("x=%1d/n",x);C. peintf("x=%8dL/n",x);D. printf('x=%LD/n",x);解析:解析x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是%1d,所以排除选项A和选项C ;由于C语言中是区分大小写的,1d中的d不能为大写,故排除选项D。4个选项中B正确。33. 假设有如下定义:struct stuchar n

29、ame9; int age ; float score ;);struct stu class10="Li",17,67,"So ng",19,80,"guo",18,79,"Zhao",16,69;根据上面的定义,假设执行“ prin tf("%s:%d%f",class3. name,class3.age,class3.score);" 那么输出的 正确结果是()。class3为"Zhao",16,69分数:1.00 解析:解析class10是结构体型的数组,3

30、4. 以下数据结构中不属于线性数据结构的是。分数:1.00 A. 队列B. 线性表c.二叉树 VD. 栈解析: 解析 线性结构是指满足如下条件的非空数据结构: 有且只有一个根结点;每一个结点最多 有一个前驱、一个后继。队列、线性表和栈同时满足这些条件, 二叉树的结点可能存在两个后继, 所以不是线性 结构。35. 有以下程序:main()int a=15,b=21,m=0;switch(a%3)case 0:m+;break;case 1:m+;switch(b%2) default:m+;case 0;m+;break;printf("%d/n",m);程序运行后的输出结果

31、是( )分数: 1.00 )A. 1 VB. 2C. 3D. 4 解析: 解析 在 switch 语句中 break 语句的作用是退出分支语句,假设没有 break 语句那么一直向下执行。此题中首先计算switch后面括号里的表达式a%3,即15%3为0:执行caseO :后面的语句“ m+ ; , m自力口 1,即卩m为1 ;遇到break语句;然后跳出switch语句,所以最后输出的 m 值为 1 。所以选项 A 正确。36. 以下关于 E-R 图的描述中正确的选项是 ( ) 。(分数: 1.00 )A. E-R 图只能表示实体之间的联系B. E-R 图只能表示实体和属性之间的联系C. E

32、-R 图只能表示实体和属性D. E-R 图能表示实体、属性和实体之间的联系 V解析: 解析 E-R 图不仅可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实 体集内部实体之间的联系。37. 下面描述中,符合结构化程序设计风格的是( ) 。使用顺序、选择和重复 ( 循环 )3V分数: 1.00 A.种根本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用 goto 语句解析: 解析 符合结构化程序设计风格中,应该选择只有一个入口和一个出口的模块,应选项B 错误;首 先要保证程序正确,然后才要求提高效率,应选项 C 错误;严

33、格控制使用 goto 语句,必要时可以 使用,故 选项 D 错误。38. 在一棵二叉树上第 5 层的结点数最多是 ( ) 。 分数: 1.00 A. 8B.16 VC.32D.15解析: 解析 在二叉树的第 K 层上,最多有 2k-1 个结点。所以,第 5 层的结点数最多为 25-1 即 16 个。39. 以下选项中合法的字符常量是 ( ) 。( 分数: 1.00 )A. “ BB. /010' VC. 68D. D解析:解析选项A中是字符串的表示方法,选项B是一个转义字符,选项C是整型常量,选项 D 不是常 量的表示方法。40. 以下程序的输出结果是 ( ) 。main()char

34、a10='1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '/0'),*p; int i;i=8; p=a+i;printf("%s/n",p-3); 分数: 1.00 A. 6B. 6789 VC. '6'D. 789解析: 解析 p 被定义为指针型变量, 被赋值为数组 a 的首地址加 8,即指向元素 '9' 。将指 针向前移

35、 3 位, 输出 '6' 后的字符串,遇到 '/0' 结束输出,即 6789。41. 下面程序的输出结果是 ( ) 。char s()="ABCD",*p;main()for(p=s;p < s+4;p+)printf("%s/n",p); ) 分数: 2.00 A. ABCD BCD CD D VB. A B C DC. D C B AD. ABCD ABC AB A解析:解析p为指针型变量。第一次循环,p=s ,p的值为字符数组s的首地址,输出字符串"ABCD"。P+,第二次循环,p的值为字符

36、数组s的首地址加1,输出字符串"BCD"。p+,第三次循环,p 的值为字符数组s的首地址加2,输出字符串"CD"。p+,第4次循环,p的值为字符数组 s的首 地址加 3,输出字符串 'D" 。42. 下面的程序运行后输出为 ( ) 。 #include < stdio.h ># include < math.h > main() int a,b;float c; b = 5;c = 6;c = b+7;b = c+1;a = sqrt(double)b+c); printf("%d,%f,%d"

37、;,a+6,C,b); 分数: 2.00 12.0000000 ,13.000000A.11.000000 ,B.11.000000 ,12.000000 ,13C.11.0000000 ,12,13D.11 ,12.000000 , 13 V解析: 解析 输出函数中 a+6, b 要求按整数形式输出,所以选项 D 正确43. 有以下程序:main(int arge , char*argv) int n,i=0; whilearv1i!='/0'n=fun ;i+;printf("%d/n",n*argc)int fun()static int s=0;s+

38、=1;return s;假设程序经编译、连接后生成可执行文件 exam.exe ,假设输入以下命令行 exam 123 V回车 那么运行结果为()。分数: 2.00 A. 6 VB. 8C. 3D. 4解析: 解析 主函数的第一个参数 argc 为整形参数,记下从命令行输入的参数的个数;第二个 参数 argv 是一个字符型的指针数组, 它的每一个元素指向命令行输入的参数字符数。 在本例中 argc 的值为 2 , argv0 指向字符串“ exam, argv1 指向参数字符串“123。在 main() 函数中, while循环执行了3次,调用 了 3次fun()函数;第一次调用了fun()函

39、数时,定义了一个静态变量s并赋初值 0,加 1 后作为函数值返回, n 的值为 1;第二次调用 fun() 函数时,静态 变量为函数值返回, n 的值为 2;同理第三次 调用返回后, 选。44. 下面程序段的运行结果是 ( ) 。char a="abcdefgh"char *p=a; p+=3;printf("%d/n",strlen(strcpy(p,"ABCD");s 的值将保存上一次退出时的值 1 ,再加 1 为 2,作的值为 。输出的值为 所以, 选(分数: 2.00 )A. 8B. 12C. 4 VD. 7 解析: 解析 p

40、 被定义为指针型变量,指 向字符数组 strcpy(p,"ABCD") 将字符串 "ABCD"( 连同'/0') 复制到的字符串的长度,返回字符串中字a 的首地址。执行 p+=3 ;指针后移 3 位,指向 d符的个数 (不计 '/0')p 所指向的地址单元中, strlen() 函数计算 p 所45. 设有 int x=11 :表达式 (x+*1/3) 的值是 ( ) 。指向,返回值为字符串 "ABCD" 中字符的个数 4分数: 2.00 A. 3 VB. 4C. 11同级算术运算符结合性为自左向右。D

41、. 12解析:解析自增运算的优先级高于其他双目算术运算符,所以表达 式 (x+*1/3) 等价于 (x+)*1/3=11*1/3=3 。46. 假设有定义:int a=8 ,b=4 , C; 执行语句“ c=a/b+0.4 ; 后,c 的值为()。(分数: 2.00 )A. 1.4B. 1C. 2.0D. 2 V解析: 解析 a、b、c 为整型,赋值运算符两侧的数据类型不一致,系统先自动将右侧表达式求得的数值, 按赋值号左边变量的类型进行转换,再赋值给左边的变量。去掉右侧表达式值的小数 局部变为整数赋值给 变量 c,c 的值为 2。47. 假设有如下程序:main()int x=14,32,6

42、5,69,78,59,*t;t= x +5; printf("%d/n",*-t);那么程序执行后的输出结果是 ( ) 。(分数: 2.00 )A. 78 VB. 65C. 32D. 14解析: 解析执行 t=x+5 :使指针指向数组元素 59,运算符 *和- 的优先级相同,结合性为自右 向左,先 计算 -t ,对 t 减 1,使 t 指向数组元素 78,再计算 *t ,取该地址单元的值 78。48. 假设有以下定义: char a ; int b ; float c ; double d ;那么表达式“a*b+d - c 值的类型为 ()。(分数: 2.00 )A.flo

43、atB.intC.charD.double Vdouble参加运算的数据类型不同,换中的级别最高,其他数据类型都要转化为 double ,因此表达式值的类型为 double 49. 假设有如下程序: main() int x=3,y=4,z;z=(x+(y-=X*X); printf("%d,%d/n",y,z);那么程序执行后的输出结果是 ( )(分数: 2.00 )A. -4 ,2B. -5 ,-2 VC. -5 ,-1D. 4 ,-2 解析:解析因为x的初始值为3,所以x*x=9,而y的初始值为4,所以y-=9后,y为-5 , z= (x+y-=x*x =3+ -5

44、=-2 。故程序执行后的输出结果是-5 ,-2 ,选项 B 正确50. 设有如下定义:struct sschar name10 ;int age ;char sex ;std3,*p=std; 下面各输入语句中错误的选项是 。分数: 2.00 A.scanf "%d",& *p .age ;B. seanf "%s",& ; VC. scanf "%c",&std0,sex D. seanf "%e",& p- > sex;解析: 解析 选项 A 中&

45、*p.age 代表的是 std0.age 的地址,是正确的,选项C 也是正确的,选项 D 先用指针变量引用结构型的成员sex ,然后取它的地址, 也是正确的, 选项 B 中的 是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员name。所以B选项为所选。二、填空题 总题数: 17 ,分数: 40.00 51. 在深度为 5 的完全二叉树中,度为 2 的结点数最多为 【1】 。分数:2.00 )填空项 1: 正确答案: 15 解析: 解析 在深度为 5的完全二叉树中,度为 2的结点数最多的是深度为 5的满二叉树。在深 度为 5的 满二叉树中,前 4 层中所有结点

46、的度为 2。即在深度为 5 的完全二叉树中,度为 2 的 结点数最多相当于深 度为 4的满二叉树中的结点数。深度为 4 的满二叉树中的结点数为 24上 标 -1=15 。52. 数据的逻辑结构在计算机存储空间中的存放形式称为数据的【2】 。分数: 2.00 填空项 1: 正确答案:存储结构 或物理结构、或物理存储结构 解析: 解析 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。53. 假设按功能划分,软件测试的方法通常分为白盒测试方法和【3】 测试方法。分数: 2.00 填空项 1: 正确答案:黑盒 或黑箱 解析: 解析 按功能划分, 软件测试分为白箱测试和黑箱测试方法。 白箱

47、测试是根据对程序内部逻 辑结构 的分析来选取测试用例;黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根 据程序功能导出 测试用例。54. 在关系运算中,【4】 运算是对两个具有公共属性的关系所进行的运算。 分数: 2.00 填空项 1: 正确答案:自然连接 解析: 解析 在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。55. 实体之间的联系可以归结为一对一的联系, 一对多的联系与多对多的联系。 如果一个学校有许 多学生, 而一个学生只属于一个学校,那么实体集学校与实体集学生之间的联系属于【 5】 的联系。( 分数: 2.00 )填空项 1: ( 正确答案:一对多 )解

48、析: 解析 实体之间的联系可以归结为一对一、一对多与多对多。如果一个学校有许多学生, 而一个教 师只归属于一个学生,那么实体集学校与实体集学生之间的联系属于一对多的联系。56. 字符 A 的 ACSII 码值为 65,以下语句的输出结果是 【 6】 。char ch='B'printf("%c %d/n",ch,ch);( 分数: 2.00 )填空项 1: (正确答案: B 66 )解析: 解析 printf 函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数: 格式 控制参数和输出项参数。此题中, printf("%c%d/n&q

49、uot;,ch,ch) 表示以字符格式和十进制整数格式输 出 ch, B 的 ACSII 码值为 66 ,即在计算机中 B 的十进制整数格式是 66。所以,输出为 B 66 57. 以下程序段的输出结果是 【7】 。main()int a=2,b=2,c=4;a*=16+(b+)-(+C);printf("%d",a);( 分数: 2.00 )填空项 1: ( 正确答案:26)解析:解析a*=16+(b+)-(+c) 等价于 a*二a*(16+(b+)-(+c)=2*(16+(2-5)=26参加b+ 是先使用b 的运算,再对 b 加 1 ; +c 是先 c 加 1 ,再使用

50、 c 的值参加运算。58. 有以下程序main()int t=1,i=5 ; for( ; i > =0; i-) t*=i;printf("%d/n",t);执行后输出结果是 【 8】( 分数: 2.00 )填空项 1: (正确答案:0)解析: 解析 此题中的 for 循环共执行了 6 次,每执行一次将相应 i 的值相乘, 最后当 i=-1 时停 止循环 该 for 循环执行完后 t 的值为 5*4*3*2*1*0=0 ,故最后输出 t 的值为 0。59. 假设有以下程序:main() int a=4, b=3, c=5, t=0; if(a < b) t=a

51、; a=b; b=t; if(a < c) t=a; a=c; c=t; printf("%d%d%d/n",a,b,C);执行后输出结果是 【 9】分数: 2.00 填空项 1: 正确答案: 503 解析: 解析先判断表达式a<b 为假,不执行t=a ,但执行“ a=b;b=t; , a 的值为 3,b 的值为0。再判断表达式a< C,值为真,所以执行后面的3条语句“ t=a ; a=c ; c=t ,结果a的值为 5,c 的值为 3,所以最后输出的结果为5、 0 和 3。60. 有以下程序:#include < stdio.h >mainc

52、har ch1,ch2; int n1,n2;ch1=getchar; ch2=getchar;n1=ch1-'0' n2=n1*10+ch2-'0'printf"%d/n",n2;程序运行时输入12<回车>,执行后输出结果是【 10】。分数:2.00 )填空项解析:1: 正确答案: 12解析 字符类型的数据在内存中以相应的ASCII 码存放,在 C 语言中,字符数据可以等价为与其相应的 ASCII 码的整数,还可以作为整数参加运算。 在此题中, n1=ch1-'0'='1-'0'=49-48=1 n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12 ,所以,最后输出为 12 。61. 有以下程序: void f( int y,int *x) y=y+*x; *x=*x+y;main()int x=2,y=4;f(y,&x);ptintf("%d %d/n",x,y);执行后输出结果是 【 11】。分数: 2.00 填空项 1: 正确答案:

温馨提示

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

评论

0/150

提交评论