ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:80.50KB ,
资源ID:502815      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-502815.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级(C语言)机试历年真题试卷汇编15及答案与解析.doc)为本站会员(ownview251)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编15及答案与解析.doc

1、国家二级( C语言)机试历年真题试卷汇编 15及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上说法均错误 2 支持子程序调用的数据结构是 ( )。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 3 下列叙述中正确的是 ( )。 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非 线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 4 某二又树有 5个度为

2、 2的结点,则该二叉树中的叶子结点数是 ( )。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 5 下列排序方法中,最坏情况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 6 将 ER图转换为关系模式时,实体和联系都可以表示为 ( )。 ( A)属性 ( B)键 ( C)关系 ( D)域 7 数据库应用系统中的核心问题是 ( )。 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D)数据库管理员培训 8 下面叙述中错误的是 ( )。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行

3、 “错误定位 ”是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划,排除测试的随意性 9 软件按功能可以分为:应用软件、系统软件、支撑软件 (或工具软件 )。下面各项中属于应用软件的是 ( )。 ( A)编译程序 ( B)操作系统 ( C)教务管理系统 ( D)汇编程序 10 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 ( )。 ( A)提高耦合性、降低内聚性有利于提高模块的独立性 ( B)降低耦合性、提高内聚性有利于提高模块的独立性 ( C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的

4、紧密程度 11 有两个关系 R, S如下: 由关系 R通过运算得到关系 S,则所使用的运算为 ( )。 ( A)选择 ( B)投影 ( C)插入 ( D)连接 12 以下说法中正确的是 ( )。 ( A) C语言程序总是从第一个定义的函数开始执行 ( B)在 C语言程序中,要调用的函数必须在 main()函数中定义 ( C) C语言程序总是从 main()函数开始执行 ( D) C语言程序中的 main()函数必须放在程序的开始部分 13 设函数中有整型变量 n,为保证其在未赋值的情况下初值为 0,应选择的存储类别是 ( )。 ( A) auto ( B) register ( C) stat

5、ic ( D) auto或 register 14 若有以下定义: int x10, *pt=x; 则对 x数组元素的正确 引用是 ( )。 ( A) * x10 ( B) *(x+3) ( C) *(pt+10) ( D) pt+3 15 有以下程序: #include stdio h main() int a=5, b=1, t; t=(a 2) b; printf(“ d n“, t); 程序运行后的输出结果是 ( )。 ( A) 21 ( B) 11 ( C) 6 ( D) 1 16 有以下程序: #include stdio h struct ord int x, y; dt2=1,

6、 2, 3, 4; main() struct ord*p=dt; printf(“ d, “, +p一 x); printf(“ d n“, +p一 y); 程序运行后的输出结果是 ( )。 ( A) 1, 2 ( B) 2, 3 ( C) 3, 4 ( D) 4, 1 17 以下函数按每行 8个输出数组中的数据: void fun(int * w int n) int i; for(i=0; i n; i+) _ printf(“ d“, wi); printf(“ n“); 下画线处应填入的语句是 ( )。 ( A) if(i 8= =0)printf(“ n“); ( B) if(i

7、8= =0)continue; ( C) if(i 8= =0)printf(“ n“); ( D) if(i 8= =0)continue; 18 有以下程序: #include stdio h int b=2: int fun(int*k) b=*k+b; return(b); main() int a10=1, 2, 3, 4, 5, 6, 7, 8, i; for(i=2; i 4; i+) b=fun( for(i=0; i sum; i+) if(i 10=0 i!=0) *每行输出 10个数 * printf(“ n“); printf(“ 5d“, aai); * wf=fop

8、en(“out dat“, “w“); sum=fun(15, aa); for(i=0; i sum; i+) if(i 10=0&i!=0) *每行输出 10个数 * fprintf(wf, “ n“); fprintf(wf, “ 5d“, aai); fclose(wf); * 国家二级( C语言)机试历年真题试卷汇编 15答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。 2 【正确答案】 A 【试题解析】 在高级语言中 ,函数的调用是通过栈来实现的。在进行函数调用时,系统将所需的信息压入

9、栈中,如函数的局部变量、返回值等。每个函数的状态是由函数中的局部变量、函数参数值、函数的返回值地址决定的,存储这些信息的数据区域称为活动记录,或叫做栈帧,它是运行时系统栈上分配的空间。 3 【正确答案】 D 【试题解析】 栈是 “先进后出 ”的线性表,队列是 “先进先出 ”的线性表,循环队列链式存储的线性表,也是线性结构。有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。 4 【正确答案】 C 【试题解析】 由二叉树的性 质可得,对于一个非空的二叉树,叶子结点数等于度为 2的结点数目加 1。 5 【正确答案】 D 【试题解析】 冒泡排序,简单选择排序,直接插入排序在最坏情况下的比较次数

10、都是 O(n2),而堆排序的时间复杂度为 O(nlog2n)。 6 【正确答案】 C 【试题解析】 E-R图转换为关系模式时,实体和联系都可以表示为关系。 7 【正确答案】 A 【试题解析】 数据库应用系统是在数据库管理系统 (DBMS)支持下建立的计算机应用系统。数据库设计是数据库应用系统中的核心问题。 8 【正确答案】 A 【试题解析】 软件测试是为了发现软件中的错误,但最终目的不是改正错误,而是开发出高质量的完全符合用户需要的软件。 9 【正确答案】 C 【试题解析】 系统软件主要包括: 操作系统软件; 各种语言的解释程序和编译程序; 各种服务性程序; 各种数据库管理系统。操作系统、编译

11、程序与汇编程序属于系统软件,编译程序与汇编程序也称为支撑软件,而教务管理系统属于应用软件。 10 【正确答案】 B 【试题解析】 耦合性是指模块间互相连接的紧密程度,内聚性是指一个模块内部各个元素问彼此结合的紧密 程度。提高内聚性、降低耦合性是提高模块独立性的方法。 11 【正确答案】 B 【试题解析】 关系 S是由关系 R的第 1、 2列的元组组成,很显然这是对关系 R进行投影运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性。由选择、投影、插入、连接的定义可知,本题所使用的运算是投影。 12 【

12、正确答案】 C 【试题解析】 C语言的程序是由主函数 main()开始运行;由主函数来调用其他函数,函数必须是并列的, 定义后才能使用,不能在一个函数中定义其他函数;main()函数不一定要放在程序的执行部分,故 C选项正确。 13 【正确答案】 C 【试题解析】 静态存储类型定义变量在未对其初始化时会对其初始化默认值,其中 int型的默认初始化值是 0,其他选项的存储类型不能保证变量在未赋值情况的初值。 14 【正确答案】 B 【试题解析】 数组的下标是从 0开始的,故 x10实际上具体为 x0, x1, ,x9,而若使用 x10就会溢出,编译出错。所以 AC两项错误; D项是指向地址的,并

13、未引用到元素 ; B项的表达正确,代表 x3中的元素。 15 【正确答案】 A 【试题解析】 本题解题方法有如下两种: 位运算最常规的方式是转换为二进制,然后再运算。 5的二进制是 101,在 2后为 10100,然后和 00001进行或运算后等于 10101,其十进制为 21; a 2即为 a*4,结果为 20, 1相当于保证这个数是奇数,若不是则加 1,所以为 21。 16 【正确答案】 B 【试题解析】 dt是一个结构体数组,所以初始化的结果为 dt0=1, 2,dt1=3, 4。 * p=dt;,表示 p指向 dt0。 +p一 x中,一的优先级大于+,所以这个表达式等价于 +(p一 x

14、),因为 p一 x为 1,所以这个值为 2,同理,第二个 +p一 y的值为 2+1=3。 17 【正确答案】 C 【试题解析】 每行输出 8个数组数据后输入一个换行,所以应该采取对 8取余的方法,余数循环一次便换行一次,所以语句为 if(i 8=0)printf(“ n“);。 18 【正确答案】 C 【试题解析】 因为 int是全局变量,所以它的值在整个程序结束时才会消失。 for循环第一次 i=2, ai=3,所 以 fun(&ai)=3+2=5,这时 b为 5,所以b=fun(&ai)+b=5+5=10。第二次循环时, b=10,然后 fun(&ai),代入 ai=4,这时 fun(&a

15、i)=10+4=14,所以 b=fun( ai)+b=14+14=28 19 【正确答案】 A 【试题解析】 good中 g的 ASCII码值为 103, o的 ASCII码值为 111, d的ASCII码值为 100。在 fun函数中, if(*s 2=0)语句会挑选出 ASCII码值为偶数的字母。在 good中,只有 d的 ASCII码值为偶数,所以结果为 d。 20 【正确答案】 C 【试题解析】 fopen(“filea txt“, “w“);表示以写的形式打开 filea txt,fprintf(f, “abc“);是先将文件清空再写入。所以本题是将 abc写入 filea txt。

16、 21 【正确答案】 B 【试题解析】 主函数中语句 d=f(f(a, b), f(a, c);用函数的返回值做参数,所以首先计算 f(a, b),代入 a=3, b=4,得 3,然后计算 f(a, c),代入 a=3, c=5得6,所以 d=f(f(a, b), f(a, c);,即为计算 d=f(3, 6),值为 9。 22 【正确答案】 A 【试题解析】 该题可通过程序运行的输出结果判断输入情况。因为 scanf()函数输入的形式是只有 c1和 a2之间有空格,没有别的符号,故运行程序后,输入的时候 a1和 c1之间、 a2和 c2之间没有空格,在输入 c1后,应先输入一个空格,再输入

17、a2,所以 A选项符合题意。 23 【正确答案】 D 【试题解析】 IsDIV(m, 5)&IsDIV(m, 7)都为真,即表达式 (m 5=1)?1: 0)结果为 1,且表达式 (m 7=1)?1: 0)结果也为 1,因为 m 5, m 7都等于 1,所以题目表达的是,判断 m被 5和 7整除是否都余 1。 24 【正确答案】 A 【试题解析】 本题中 p=p+1;语句只改变指针 p的地址,跟 p内容无关,所以 m值没有改变。而 *q=*q+1;语句中 q地址指针指向的内容改变了 n值,所以 n变为3。 25 【正确答案】 C 【试题解析】 字符串的输入有两种方式: scanf()函数; g

18、et()函数。 C项中,s代表输入一个字符数组而非地址,而且遇到空格时会默认字符串输入结束,所以不能读入带有空格的字符串。 26 【正确答案】 C 【试题解析】 输入函数 scanf的标准格式是: scanf(格式控制,地址列表 ), AD两项中地址列表格式不正确,应为 &x, &y。格式控制和地址列表间应该用逗号隔开, B项也错误。 27 【正确答案】 D 【试题解析】 AC两项错误,因为 s是数组首地址,并非字符串变量; B项, s为字符串变量,赋值方式却为数组方式,故错误。 D中先定义一个字符串变量,然后将变量指向一个字符串常量,语句正确。 28 【正确答案】 B 【试题解析】 在 C语

19、言中函数参数传递的功能是 “传 值 ”,即形参和实参是两个没有关系的变量。本题函数的形参虽然为指针变量,但是函数内部交换的是地址值,而不是地址值所指向的函数值,所以不会传递给实参,因此交换函数并没有交换 p、 q所指向的值。 29 【正确答案】 D 【试题解析】 C语言中实型常量有两种表示:小数形式和指数形式。在指数形式中,字母 e(或 E)之前必须要有数字,且 e或 E后面的指数必须为整数,故 C项错;八进制整数常量以数字 0开始,而不是 O,故 A项错。而在八进制数中的有效数字为 0 7,故 B项错。 30 【正确答案】 D 【试题解析】 if中的表达式一般是关系表达式或逻辑表达式,用于描

20、述选择结构的条件,但也可以是其他类型表达式,在其值非零时为真,所以任意合法的表达式都可以做 if语句的判断条件。 31 【正确答案】 B 【试题解析】 第一个 if有一个 else语句,若 x =3,就什么也不做,若 x 3,则进入 else语句中,在 else语句中只有当 x!=10时才会有输出结果,所以输入的值的范围应为大于 3且不等于 10的整数。 32 【正确答案】 B 【试题解析】 int k;这条语句是定义一个整型变量 k,是动态定义,所以 k中的值 无定义。如果采用静态定义,则会自动初始化变量为默认值 1。 33 【正确答案】 D 【试题解析】 要统计一行中输入字符个数 (不包含

21、回车符 )的程序实现,首先定义一个用作统计的变量 n,赋初值为 0;因为字符结束应该有换行符,所以该行字符是否结束的判断条件应为 getchar()!=“ n“;。 for循环中用括号括起来的 3个表达式之间要用分好隔开,其中表达式可以省略,但分号必须保留,故 D选项错误。 34 【正确答案】 C 【试题解析】 首先 a=1, b=2, c=3, d=0;因为 a为 1, b+本身为 b加 之前的值,即 b+为 2,所以第一个 if语句的判断条件为真,进入 if语句。 b经过 b+运算后值为 3,所以第二个 if语句为真 (或运算时,一个为真,整体都为真,并且第一个为真时第二个不会被执行运算

22、),这时后面的运算都忽略。 35 【正确答案】 A 【试题解析】 考查字符串的存储方式, C语言中字符串存储是以字符数组形式,每个字符串存储会在后面加 0再存储, 0对应 ASCII值为 0,最后一次是 010,值为 0,结果为 5670。 36 【正确答案】 C 【试题解析】 C语言中标识符的命名规则:标识符 由字母、数字和下画线组成,并且第一个字符必须是字母或下画线,而不可以是数字。 37 【正确答案】 A 【试题解析】 char *a定义了一个指向数组的指针。由题中初始化结果得:*a0=“abcd”, a1=“ef”, a2=“gh”, a3=“ijk”,但是在输出语句时要求输出的格式是

23、 c,为一个字符,所以每个元素输出第一个字符,即 aegi。 38 【正确答案】 A 【试题解析】 输出的 x与 y间没有空格, “ 8 6f”代表输出字符型数据 y的格式应为小数点后保留 6位。 39 【正确答案】 D 【试题解析】 A项,因为赋值运算优先级最低,所以先做 x+1,此时 x为 3,然后再 x*=3,所以为 x=2*3=6; B项, x+得 3然后 2*x得 6; C项与 A项原理一致。 2*x虽然结果为 4,但未有赋值,此时 x的值仍为 2,所以最终为 4。 40 【正确答案】 B 【试题解析】 fun的功能是求两数的平均数,并且参数和结果都为整型。题中是用一个函数作为另一个

24、函数的参数,所以应该先做里面嵌套的函数即 fun(b, c),值为 5。 fun(2*a, fun(b, c)即为计算 fun(2*4, 5),所以结果为 (5+8) 2=6。 二、程序填空题 41 【正确答案】 (1)1 0 (2)1 (3)i 【试题解析】 本题考查:累加、累乘;复合赋值运算;变量赋初值; for循环条件。 填空 1:本题要求给 double型变量 t赋初值,从 for循环中我们知道, t用来存放累乘的结果,因此 t的初值应该为 1。 填空 2:考查 for循环变量的范围,注意本题要求计算 f(x)的前 n项,即计算: 1+x+ + ,所以循环变量 i应从 1递增至 n一

25、1,因此此空应填 1。 填空 3: t用来存放每次循环增量,分析公式可知,后一项总是在前一项的基础上乘以一个 ,因此此空应填 i。 三、程序修改题 42 【正确答案】 (1)for(i=j+1; i n; i+) (2)p=i; 【试题解析】 本题考查: for循环语句;需明确各个变量含义。 该程序是对 n个无序数实现从小到大的排序,先找出整数序列的最小项,置于指针第 1个元素的位置;再找出次小项,置于第 2个元素的位置;之后顺次处理后续元素。 (1)数组的长度为 n,所以最后一个元素的下标值为 n一 1, i的取值范围应该包括此下标值。 (2)p是中间变量,存放值较小的元素下标。 四、程序设

26、计题 43 【正确答案】 int fun(int lim, int aaMAX) int i, j, k=0; for(i=2; i =lim; i+) *求出小于或等于 lim的全部素数 * for(j=2; j i; j+) if(i j=0)break; if(j =i) aak+=i; *将求出的素数放入数组 aa中 * return k; *返回所求出的素数的个数 * 【试题解析】 本程序使用 for循环语句查找小于 lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法: for(j=2; j i; j+) if(i j=0)break;

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1