![二级C语言笔试-91_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/30/34a200e0-7a4a-4ddd-b0b6-865ff80aaae0/34a200e0-7a4a-4ddd-b0b6-865ff80aaae01.gif)
![二级C语言笔试-91_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/30/34a200e0-7a4a-4ddd-b0b6-865ff80aaae0/34a200e0-7a4a-4ddd-b0b6-865ff80aaae02.gif)
![二级C语言笔试-91_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/30/34a200e0-7a4a-4ddd-b0b6-865ff80aaae0/34a200e0-7a4a-4ddd-b0b6-865ff80aaae03.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二级 C 语言笔试 -91( 总分: 100.00 ,做题时间: 90 分钟 )一、选择题 (总题数: 50,分数: 60.00)1. 一个完整的C语言程序包含一个或多个函数,其中唯一不可缺少的函数是()。(分数: 1.00 )A. 库函数B. scanf 函数C. main主函数 VD. printf函数解析:解析一个完整的C程序有且仅有一个主函数(main()函数),主函数可以调用其他各种函数,但其 他函数不能调用主函数,C程序从主函数开始执行,并在主函数中结束整个程序的运行。故选项C正确。2. 程序中头文件 type1.h 的内容是 ( ) 。#define N 5#define M1
2、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=25 。3. 下面程序的输出结果是 ( ) 。main()struct m1int a;int b;en2=1,3,2,7);printf("%d/n",en0.b/en0.a*en1.(分数: 1.00 )A. ;A
3、) 6B) 0C) 1DV解析: 解析 en2 是结构体类型的数组, en0.b/en0.a*en1.a=3/1*2=6。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. 若有如下程序:main()stat
4、ic char*a3="123","456","789");char *b;b=a; +b; printf("%s,%s/n",*a,*a+1);printf("%s,%s/n",*b,b1);则程序运行后的输出结果是 ( ) 。(分数:1.00 )A.123,456,456, 789B.123,23456, 56C.123,23456, 789VD.123,456456, 56解析: 解析 a 为指针数组, a0 即数组 a 的数组名指向字符串 "123" 的首地址,输出
5、*a 为"123" , *a+1 将指针下移 1 个存储单元,输出字符串为” 23”。a1 指向字符串 "456" 的首地址, a2 指向字符串 "789"的首地址。 b 为指针的指针,它的值为数组 a 的首地址。6. 若有如下程序:int sub(int m)if(m=1|m=0) return 2;else return(sub(m-1)*sub(m-2);main()int n;scanf("%d",&n);printf("%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) 递推下来就是上标 )=32 。所以正确答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,则输出结果为 ( ) 。# include< stdio.h ># include< math.h ># defin
7、e disc(a,b,c) b*b-4*a*cmain()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-sqrt(disc(a,b
8、,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','/x
9、8'解析: 解析 选项 B 中初值列表中的初值个数超过了数组包含的元素的个数。9. 定义如下变量:int n=10;则下列循环的输出结果是 ( ) 。while(n > 7)-n;printf("%d/n",n);(分数: 1.00 )A. 1098B. 987VC. 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 V y)z = y + x; printf("%d",z);(分数: 1.00 )A. 9B. 3 VC. 0D. 有语法错误解析:解析变量x得到数据3,变量y得到数据6。z=6+3=9。xv y即3v 6关系表达式的值为1,执行 z=y-X=6-3=3 。最后输出 z 的值为 3。11. 有以下程序:main()int a=5,b=4,c=3,d=2;if(a >
11、 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配对。首先计算第一个if后面的表达式a>b>c,表达式a> b为1,表达式1 >c为0, 所
12、以执行 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",&p) p=&n;D. p=&n;p=&m; V解析: 解析 p 为指针型变量,在输入函数的地
13、址列表中不用&,当给指针变量赋值时是取变量的地址赋给指针变量,&为取地址运算符,因此只有选项D正确。13. 执行下列程序时输入:123V空格456 V空格789 V回车,输出结果是()。main()char s100;int c, i;scanf("%c",&c);scanf("%d",&i); scanf("%s",s);printf("%c,%d,%s/n",c,i,s);(分数: 1.00 )A. 1,456,789B. 1,23,456VC. 1,23,456,789D. 1
14、23,456,789解析: 解析 第一个输入语句只接收一个字符 '1' ;第二个输入语句接收一个整数23,遇到空格停止;第三个输入语句接收一个字符串 "456" ,遇到空格停止。14. 下列描述正确的是 ( ) 。(分数: 1.00 )A. C 语句能嵌套定义函数,但不可以嵌套调用函数B. C 语句不能嵌套定义函数,也不可以嵌套调用函数C. C 语句能嵌套定义函数,也可以嵌套调用函数D. C 语句不能嵌套定义函数,但可以嵌套调用函数 V解析: 解析 C 语句不能嵌套定义函数,但可以嵌套调用函数。15. 以下函数值的类型是 ( ) 。fun (float x)
15、float y;y=3*x-4;return y;(分数: 1.00 )A. intVB. 不确定C. voidD. float解析:解析函数定义时如果数据类型默认,则默认为int。函数中如果有“ retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值 的类型作为返回值,因此本题的函数值类型是 int 。16. 下列叙述中错误的是 ( ) 。(分数: 1.00 )A. 一种数据的逻辑结构可以有多种存储结构B. 数据的存储结构与数据处理的效率无关VC. 数据的存储结构与数据处理的效率密切相关D. 数据的存储结构在计算机中所占的空
16、间不一定是连续的解析: 解析 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索 引等,选项A和选项D正确。采用不同的存储结构,其数据处理的效率不同,因此,在处理数据时选择合 适的存储结构很重要,选项 c正确,选项B错误,应为本题正确答案。17. 下列属于不合法的 main 函数命令行参数表示形式的是 ( ) 。(分数: 1.00 )A. main(int argvB. main(int argvC. main(int argvD. main(int argc, char*argc), char*argc)V, char*arc), char*argv)解析: 解
17、析 main 函数通常可用两个参数,参数名可由用户自定,但类型是固定的,第一个参数必须是整型,第二个参数是一个指向字符型的指针数组的指针,可以表示为*arc或*argc 。4个选项中只有选项 B 不符合。18. 下列叙述中正确的是 ( ) 。(分数: 1.00 )A. 接口复杂的模块,其耦合程度一定低B. 耦合程度弱的模块,其内聚程度一定低C. 耦合程度弱的模块,其内聚程度一定高 VD. 上述三种说法都不对解析: 解析 模块之间的连接形式以及模块接口的复杂性, 是影响模块耦合的主要因素。 接口复杂的模块, 其耦合程度要比接口简单的的模块强;耦合程度弱的模块,其内聚程度一定高。19. 下列程序段
18、输出的字符串长度为 ( ) 。printf("/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,&y,&z);C. scanf("%d%d
19、%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. 以下程序的输出结果是 ( ) 。main()int a=-1 , b=4, k;k=(+a v 0)&&!(b- v =0);prin
20、tf("%d%d%d/n"m,k,a,b);(分数: 1.00 )A. 104B. 103C. 003D. 004 V解析: 解析 &&的优先级高于 =,先计算 &&左侧的表达式 +av 0。先对 a 加 1 再与 0 比较大小, a=-1+1=0, +av 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中都无后缀1或L,故选项B、c、D都不足合法的长整型常数,
22、只有选现 A中有后缀L,是合法的长整型常数。24. 下面对对象概念描述错误的是 ( ) 。分数: 1.00 )A. 任何对象都必须有继承性 VB. 对象是属性和方法的封装体C. 对象间的通信靠消息传递D. 操作是对象的动态属性解析: 解析 继承是使用已有的类定义作为基础建立新类,已有的类可当成基类来引用,则新类相应可当 成派生类来引用。但并非所有对象都必须有继承性。选项A 说法错误。25. 设有如下定义:struck skint a;float b;data;int *p;若要使 p 指向 data 中的 a 域,正确的赋值语句是 ( ) 。(分数: 1.00 )A. p=&a ;B.
23、 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=data.a是将结构 体变量中的成员a的值赋给指针p所指向的变量值,而不是使指针p指向da
24、ta中的a域,故选项D不正确。26. 设有如下定义:int a=4;则计算表达式“ a+=a-a*a”后的值是()。(分数: 1.00 )A. 0B. -12C. -24D. -8V解析: 解析 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 v 'B');执行该程序段后,x的值为()。(分数: 1.00 )A. 1 VB. 0C. falseD. true解析:解析a=14 , b=15,第一个&&两侧均为非零值。c='A',表达式c < 'B'的值为真即1,第二个&am
26、p;&两 侧也均为非零值。表达式 (a&&b)&&(c v 'B')的值为1,赋值给变量x。29. 语句“ a=2;p=&a;b=*p+;"执行后的结果是 ()。(分数: 1.00 )A. a=3 b=3B. a=2 b=2VC. a=2 b=1D. a=2 b=3解析:解析执行p=&a;,将变量a的地址赋给指针变量 p,运算符*和+的优先级相同,都具有自右向 左的结合性,p+是先使用p的值再对p加1,则计算*p,即取p所指向的存储单元的值 2,赋值给b,再 对 p 的值加 1。输出结果为 a=2 b=2 。30
27、. 在结构化设计方法中生成的结构图 (SC) 中,带有箭头的连线表示 ( ) 。(分数: 1.00 )A. 模块之间的调用关系 VB. 程序的组成成分C. 控制程序的执行顺序D. 数据的流向解析: 解析 结构图中用带有箭头的连线表示模块之间的调用关系31. 若有如下程序:int m=1;main()int t=0,s=0;int m=4;s+=m;)t+=m;printf("%d,%d/n",s,t);则程序运行后的输出结果是 ( ) 。(分数: 1.00 ) 解析: 解析 int m=4;s+=m;32. 设有定义: 10ng x=-123456L ,则以下能够正确输出变
28、量 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不能为大写,故排除选项Do 4个选项中B正确。33. 若有如下定义:struct stuchar name9 ; int age ; float sco
29、re ; ) ;struct stu class10="Li",17,67,"Song",19,80,"guo",18,79,"Zhao",16,69;根据上面的定义, 若执行“ prin tf("%s:%d%f",,class3.age,class3.score);"则输出的正确结果是 ( ) o分数: 1.00 )解析:解析class10是结构体型的数组,class3为"Zhao",16,6934. 以下数据结构中不属于线性数据结构的是 (
30、 ) o(分数: 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);程序运行后的输出结果是 ( ) o分数: 1.00 )A
31、. 1VB. 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-R 图只能表示实体和属性D. E-R图能表示实体、属性和实
32、体之间的联系V解析: 解析 E-R 图不仅可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实 体集内部实体之间的联系。37. 下面描述中,符合结构化程序设计风格的是 ( ) 。(分数: 1.00 )A. 使用顺序、选择和重复 ( 循环)3 种基本控制结构表示程序的控制逻辑 VB. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用 goto 语句解析:解析符合结构化程序设计风格中,应该选择只有一个入口和一个出口的模块,故选项B错误;首先要保证程序正确,然后才要求提高效率,故选项C错误;严格控制使用 goto语句,必要时可以使用,故选项D错误。38. 在
33、一棵二叉树上第 5 层的结点数最多是 ( ) 。(分数: 1.00 )A. 8B. 16 VC. 32D. 15解析:解析在二叉树的第K层上,最多有2k-1个结点。所以,第5层的结点数最多为25-1即16个。39. 以下选项中合法的字符常量是 ( ) 。(分数: 1.00 )A. “B”B . /O1 O'VC. 68D. D解析:解析选项A中是字符串的表示方法,选项B是一个转义字符,选项C是整型常量,选项 D不是常量的表示方法。40. 以下程序的输出结果是 ( ) 。main()char a10='1', '2' , '3' ,
34、9;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' 。将指针向前移 3 位, 输出 '6' 后的字符串,遇到 '/0' 结束输出,即 6
35、789。41. 下面程序的输出结果是 ( ) 。char s()="ABCD",*p;main()for(p=s;p < s+4;p+)pri ntf("%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'L p+, 第二次循环,p的值为字符数组s的首地址加1,输出字符串"BCD"。p+,第三次循环,p的值为字符数组
36、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",a+6,C,b);(分数: 2.00 )A. 11.000000 , 12.0000000 , 13.000000
37、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;while(arv1i!='/0'n=fun( );i+;printf("%d/n",n*argc)int fun()static int s=0;s+=1;return s;假设程序经编译、连接后生成可执行文件 exam.exe ,若输入以下命令行exam
38、 123 v回车则运行结果为 ( ) 。(分数: 2.00 )A. 6VB. 8C. 3D. 4解析: 解析 主函数的第一个参数 argc 为整形参数,记下从命令行输入的参数的个数;第二个参数 argv 是一个字符型的指针数组, 它的每一个元素指向命令行输入的参数字符数。 在本例中 argc 的值为 2,argv0 指向字符串“ exam”, argv1 指向参数字符串“ 123”。在 main() 函数中, while 循环执行了 3 次,调用 了 3次fun()函数;第一次调用了 fun()函数时,定义了一个静态变量s并赋初值0,加1后作为函数值返回,n的值为1;第二次调用fun()函数时
39、,静态变量 为函数值返回,n的值为2;同理第三次调用返回后, 选。44. 下面程序段的运行结果是 ( ) 。char a="abcdefgh"char *p=a; p+=3;printf("%d/n",strlen(strcpy(p,"ABCD");(分数: 2.00 )A. 8B. 12C. 4 VD. 7解析: 解析 p 被定义为指针型变量,指向字符数组 strcpy(p,"ABCD") 将字符串"ABCD"(连同70')复制到的字符串的长度,返回字符串中字符的个数 (不计'
40、/0')45. 设有 int x=11 :表达式 (x+*1/3) 的值是 ( ) 。(分数: 2.00 )A. 3VB. 4s 的值将保留上一次退出时的值 1,再加 1 为 2,作 n的值为3。输出n*argc的值为6所以,A选项为所a的首地址。执行p+=3;指针后移3位,指向d。p 所指向的地址单元中, strlen() 函数计算 p 所指向 ,返回值为字符串"ABCD'中字符的个数4。C. 11D. 12解析: 解析 自增运算的优先级高于其他双目算术运算符,同级算术运算符结合性为自左向右。所以表达 式 (x+*1/3) 等价于 (x+)*1/3=11*1/3=3
41、 。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,65,69,78,59,*t;t= x +5;printf("%d/n",*-t);则程序执行后的输出结果是 ( ) 。
42、(分数: 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. floatB. intC. charD. doubleV解析: 解析 参加运算的数据类型不同,要转换为统一的数据类型, double 在数据类型转换中的级别
43、最 高,其他数据类型都要转化为 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)=-2。故程序执行后的输出结果是 -5 , -2,选项B正确。50. 设有如下定义:struct
44、 sschar name10;int age ;char sex ;std3,*p=std;下面各输入语句中错误的是()。(分数:2.00)A. scanf("%d",&(*p).age);B. scanf("%s", &);VC. scanf("%c", &std0,sex)D. scanf("%c",&(p-> sex);解析:解析选项A中&(*p).age代表的是std0.age的地址,是正确的,选项C也是正确的,选项 D先用指针变量引用结构型的成
45、员sex,然后取它的地址,也是正确的,选项B中的是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员names所以B选项为所选。二、填空题(总题数:17,分数:40.00)51. 在深度为5的完全二叉树中,度为 2的结点数最多为【1】。(分数:2.00 )填空项1: (正确答案:15)解析:解析在深度为5的完全二叉树中,度为 2的结点数最多的是深度为5的满二叉树。在深度为 5的满二叉树中,前4层中所有结点的度为2。即在深度为5的完全二叉树中,度为 2的结点数最多相当于深 度为4的满二叉树中的结点数。深度为 4的满二叉树中的结点数为24(上标)-1=15。52.
46、数据的逻辑结构在计算机存储空间中的存放形式称为数据的【2】。(分数:2.00 )填空项1: (正确答案:存储结构(或物理结构、或物理存储结构)解析:解析数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。53. 若按功能划分,软件测试的方法通常分为白盒测试方法和【3】 测试方法。(分数:2.00 )填空项1: (正确答案:黑盒(或黑箱)解析:解析按功能划分,软件测试分为白箱测试和黑箱测试方法。白箱测试是根据对程序内部逻辑结构 的分析来选取测试用例;黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导岀 测试用例。(分数:2.00 )填空项1: (正确答案:自然连接)解
47、析:解析在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。55. 实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只属于一个学校,则实体集学校与实体集学生之间的联系属于【5】的联系。(分数:2.00)填空项1: (正确答案:一对多)解析:解析实体之间的联系可以归结为一对一、一对多与多对多。如果一个学校有许多学生,而一个教 师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系。56. 已知字符A的ACSII码值为65,以下语句的输出结果是【6】。char ch='B:printf("%c %d
48、/n",ch,ch);(分数:2.00)填空项1: (正确答案:B 66)解析:解析printf函数的功能是按照指定的格式,在标准输岀设备上输岀数据,它有两种参数:格式控制参数和输出项参数。本题中,printf("%c%d/n",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: (正
49、确答案:26)b+是先使用b的值解析:解析a*=16+(b+)-(+c) 等价于 a*=a*(16+(b+)-(+c)=2*(16+(2-5)=26参加运算,再对b加1; +c是先c加1,再使用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
50、,故最后输出t的值为0。59. 若有以下程序:main()int a=4, b=3, c=5, t=0;if(a < b) t=a; 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的
51、值为3, 所以最后输出的结果为 5、0和3。60. 有以下程序:#include < stdio.h >main()char 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业机器质押借款合同
- 2025年劳动解除合同标准条款
- 2025年抗疟药项目申请报告模范
- 2025年货车租赁与运输服务合同样本
- 2025年国际货物买卖合同与惯例
- 2025年专业清洁人员派遣协议
- 2025年二手车购买合同范本
- 2025年三板市场股权买卖协议
- 2025年伙伴开设教育机构合作协议书模板
- 2025年继电器研发策划技术协议书范本
- 部编六年级下册语文《1 北京的春节》课件
- 驾驶员安全行车考核奖惩制度(3篇)
- 2024届安徽省普通高校分类考试招生和对口招生文化素质语文模拟检测试题(含答案)
- 篮球俱乐部合伙协议
- 中学学校2024-2025学年教学专项发展规划
- 临时道路铺设钢板施工方案
- 屋顶光伏工程施工方案
- 家长会课件:小学三年级家长会 课件
- 电力基建复工安全教育培训
- 劳务经纪人培训
- 欧洲电力回顾2024(英)
评论
0/150
提交评论