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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】国家二级C语言程序设计机试(选择题)模拟试卷4及答案解析.doc

1、国家二级 C 语言程序设计机试(选择题)模拟试卷 4 及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上说法均错误2.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列各项中属于应用软件的是( )。(分数:2.00)A.学生成绩管理系统B.C 语言编译程序C.UNIX 操作系统D.数据库管理系统3.通常软件测试实施的步骤是( )。(分数:2.00)A.集成测

2、试、单元测试、确认测试B.单元测试、集成测试、确认测试C.确认测试、集成测试、单元测试D.单元测试、确认测试、集成测试4.下列叙述中错误的是( )。(分数:2.00)A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD 图是软件详细设计的表示工具5.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为( )。(分数:2.00)A.nB.n 一 1C.n(n1)D.n(n 一 1)26.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层)( )。(分数:2.00

3、)A.3B.4C.6D.77.下列关于栈的叙述中,正确的是( )。(分数:2.00)A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先能被删除8.在数据库中,数据模型包括数据结构、数据操作和( )。(分数:2.00)A.数据约束B.数据类型C.关系运算D.查询9.一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教师和课程间的联系是( )。(分数:2.00)A.1:1 联系B.1:m 联系C.m:1 联系D.m:n 联系10.支持子程序调用的数据结构是( )。(分数:2.00)A.栈B.树C.队列D.二叉树11.以下正确的说法是( )。(分数:2

4、.00)A.用户若需要调用标准库函数,调用前必须重新定义B.用户可以重新定义标准库函数,但若重新定义,该函数将失去原有意义C.用户系统根本不允许用户重新定义库函数D.用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统会自动寻找该文件12.下列叙述中错误的是( )。(分数:2.00)A.C 程序可以由一个或多个函数组成B.C 程序可以由多个程序文件组成C.一个 C 语言程序只能实现一种算法D.一个 C 函数可以单独作为一个 C 程序文件存在13.设有定义:int a;float b;执行 scanf(”2df,C.X41;D.OX4116.有以下程序: #in

5、clude main() int a=3: a+=a 一=a*a: prinff(“dn”,a); 程序的输出结果是( )。(分数:2.00)A.0B.9C.3D.一 1217.设有定义:char s81;int i=0;以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是( )。(分数:2.00)A.gets(s);B.while(si+=getchar()!=n);si=0;C.scanf(“s”,s);D.doscanf(“c”,si); while(si+!=n);si=0;18.有以下程序: #include main() char c1,c2,c3,c4,

6、c5,c6; scanf(“cccc”,C.X41;D.OX41解析:解析:xhh表示 1 到 2 位十六进制所代表的字符,故答案为 A。16.有以下程序: #include main() int a=3: a+=a 一=a*a: prinff(“dn”,a); 程序的输出结果是( )。(分数:2.00)A.0B.9C.3D.一 12 解析:解析:等号“=”运算符是从右到左,且与“+、一、*”运算符比,优先级较低。首先计算 a*a,结果为 9,执行 a=a 一 9 后 a 的值为一 6,然后执行 a+=a,即 a=a+a=一 6+(一 6),所以值为一 12。17.设有定义:char s81;

7、int i=0;以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是( )。(分数:2.00)A.gets(s);B.while(si+=getchar()!=n);si=0;C.scanf(“s”,s); D.doscanf(“c”,si); while(si+!=n);si=0;解析:解析:函数 scanf()输入字符串时默认空格为间隔符,所以不能输入空格,答案选 C。18.有以下程序: #include main() char c1,c2,c3,c4,c5,c6; scanf(“cccc”,&c1,&c2&c3,&c4); c5=getchar(); c6=ge

8、tchar(); putchar(e1); putchar(c2); prinff(“cen”,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始): 123 45678 则输出结果是( )。(分数:2.00)A.1256B.1245 C.1278D.1267解析:解析:对于字符型数据的输入而言,从键盘上输入的字符,不管是否可以输出,都会被读入字符型变量中。因此,c1=1,c2=2,c3=3,c4=回车,c5=4,c6=5,输出 c1,c2,c5,c6 的结果为 1245,答案选 B。19.有以下程序: #include main( ) im a,b; for(a=0;a,则输出结果是

9、( )。(分数:2.00)A.2 3 3 4 5 6 B.2 3 4C.2 2 3 4 4 4D.2 3 4 3 4 4解析:解析:这是一个循环结构嵌套选择结构,按照外层循环,内层选择一步一步处理即可。本题重点注意,switch 语句中并没有出现 break 语句,所以内层循环是不会跳出的。20.对于 if(表达式)语句,以下叙述中正确的是( )。(分数:2.00)A.“表达式”的值可以是任意合法的数值 B.变量不能出现在“表达式”中C.常量不能出现在“表达式”中D.如果“表达式”的值不是逻辑值,程序会出编译错误解析:解析:B、C、D 选项描述比较片面。21.若有以下程序: #include

10、main() int c; c=13 115; printf(“dn”,c); 则程序的输出结果是( )。(分数:2.00)A.13B.15 C.18D.5解析:解析:本题考查位运算中按位或运算符,或运算只要两个比较的位中有一个为 1,其结果是 1,否则结果为 0。13 用二进制表示为 00001101,15 用二进制表示为 00001111,或运算后结果为 00001111,即15,故 B 选项正确。22.有以下程序: #include main() int a=1,b=0; if(一一 a)b+; else if(a=0)b+=2; else b+=3; printf(“dn”,b); 程

11、序运行后的输出结果是( )。(分数:2.00)A.0B.1C.2 D.3解析:解析:“+”和“一一”运算,当以前缀形式出现时,则先进行加 1 或减 1 操作,再进行其他运算;当以后缀形式出现时,则先进行其他运算,再进行加 1 或减 1 操作。a 初始定义为 1,b 为 0,执行一一a,a 的值变为 0,即 if 判断为假,执行 b+=2,输出 b 的值为 2。23.有以下程序: #include main( ) int i,array6=1,5,0,4; for(i=0;iA.0 4 0 4 0B.1 5 0 4 0 C.1 5 5 4 0D.1 2 1 2 0解析:解析:本题主要考查一维数组

12、的输出。由于数组中有 6 个元素,但初始化数组的时候只给出 4 个元素,所以 array5=0,array6=0,前面几位元素依次输出,不够位数补 0,所以选项 B 正确。24.以下叙述中正确的是( )。(分数:2.00)A.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式B.一条语句只能定义一个数组C.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 D.在引用数组元素时,下标表达式可以使用浮点数解析:解析:同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,C 选项正确。方括号中可以为整型变量或者常量表达式,A 选项错误。在使用逗号运算符的情况下,一

13、条语句可以定义多个数组,B 选项错误。数组元素在数组中的下标为整型常量或者变量构成的整型表达式,不能为浮点数,D 选项错误。答案选 C。25.若有定义语句:int m3=1,2,3,4,5,6,7;,则与该语句等价的是( )。(分数:2.00)A.int m3=1,2,3,4,5,6,7;B.int m 3=1,2,3,4,5,6,7;C.int m3=1,2,3,4,5,6,7; D.int m 3=1,2,3,4,5,6,7;解析:解析:考查二维数组的初始化。初始化二维数组的时候,若给数组的全部元素均赋初值,此时第一维的元素个数可以不指定,部分赋值时,最后一行元素不写完整,此时数组第一维元

14、素个数仍然可以不指定。题中为按行给数组 m 赋值,最后一行只有部分赋初值,答案选 C。26.以下叙述中正确的是( )。(分数:2.00)A.char,c1,c2,*c3,c440;是合法的变量定义语句 B.数组下标的下限由数组中第一个非零元素的位置决定C.数组下标的下限由数组中第一个被赋值元素的位置决定D.数组下标的下限是 1解析:解析:A 选项正确,char c1,c2,*c3,c440表示定义了两个字符变量 c1、c2,一个字符指针c3,一个字符数组 c4。数组的下限永远为 0,选项 B、C、D 错,答案选 A。27.有以下程序: #include main() int a=3: d0 p

15、rintf(“d,”,a 一=2); while(!(一一 a);printf(“n”); 程序运行后的输出结果是( )。(分数:2.00)A.1,一 3,B.1,一 2, C.3,0,D.1,0,解析:解析:本题重点考查 dowhile 语句,该循环语句的特点是,先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,dowhile 循环至少要执行一次循环语句。变量 a 赋初值为 3,每循环一次需执行语句 a 一=2 一次,同时循环条件使变量 a 自减 1,所以第一次循环后变量 a 变为 1,第 2 次循环后变量 a 变为一 2。故 B 选项正确。28.

16、若有定义: char s30=0; 运行时输入: This is a string 则以下不能正确读入整个字符串This is a string到字符数组 s 中的语句组是( )。(分数:2.00)A.scanf(“s”,s); B.gets(s);C.for(i=0;(c=getchar()!=n;+)si=c;D.i=0;while(C=getchar()!=n)ji+=c;解析:解析:考查基本的字符串输入控制语句。29.有以下程序: #include main() int X; for(X=3;XA.*3#*5 B.#3*4#5C.*3*4#5D.*3#4#5解析:解析:条件运算符组成条

17、件表达式的一般形式为:表达式 1?表达式 2:表达式 3。其求值规则为:表达式 1 值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 3 的值作为整个条件表达式的值。本题中语句 printf(x2)?(“*dt):(“#dI,x);含义为变量 x 对 2 求余,如果结果为真,则按照“*d”出,否则按照“#d”出。故 A 选项正确。30.有以下程序: #include void fun(int a,int b) int t; t=a;a=b;b=t; main() int c10=1,2,3,4,5,6,7,8,9,0,i; for(i=0;iA.1 2 3 4 5 6 7 8 9

18、0 B.2 1 4 3 6 5 8 7 0 9C.0 9 8 7 6 5 4 3 2 1D.0 1 2 3 4 5 6 7 8 9解析:解析:函数 fun()属于值传参,形参的变化不会影响实参,所以函数调用结束后,数组 c 没有任何变化,输出结果为选项 A。31.有以下程序: #include int fun(int n) int a; if(n=1)return 1; a=n+fun(n 一 1); return(a); main() printf(“dn”,fun(5); 程序的输出结果是( )。(分数:2.00)A.10B.14C.15 D.9解析:解析:考查递归函数。函数 fun()的

19、功能是计算 1 到 n 之间的数字之和,所以计算结果为 15,答案选 C。32.以下选项中,没有编译错误的是( )。(分数:2.00)A.char str3=d,e,b,u,g,0; B.char strl5=“pass”,str26;str2=strl:C.char name10;name=“china”;D.char str4;str4=“hello world”;解析:解析:B 选项中,不能直接将字符数组名直接赋值给另一个字符数组名。C 选项赋值错误,不能将一个字符串常量赋值给一个字符指针。D 选项定义 str4 时需要定义其长度。故 A 选项正确。33.有以下程序: #include

20、int add(int a,int b) return(a+b); main() int k,(*f)(),a=5,b=10; f=add; 则以下函数调用语句中错误的是( )。(分数:2.00)A.k=*f(a,b); B.k=add(a,b);C.k=(*f)(a,b);D.k=f(a,b);解析:解析:int(*f)()为一个函数指针变量,返回值为整型,f 为一个指针变量,指向一个已经定义的函数,在调用该函数的时候需要把参数写在相应的小括号内,即(*指针名)(参数或参数列表),所以选项A 调用错误,答案选 A。34.以下关于 C 语言函数参数传递方式的叙述中正确的是( )。(分数:2.0

21、0)A.数据只能从实参单向传递给形参 B.数据可以在实参和形参之间双向传递C.数据只能从形参单向传递给实参D.C 语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用解析:解析:数据只能由实参单向传递给形参称为“值传递”,而不能由形参传回来给实参,A 选项正确;数组名、指针等作参数,实参传递给形参地是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实参和形参之间不可双向传递,BD 选项错误。数据不能从形参传递给实参,C 选项错误。35.设已有定义:float x;则以下对指针变量 P 进行定义且赋初值的语句中正确的是(

22、 )。(分数:2.00)A.float*p=&;x; B.int*P=(float)x;C.float p=&;x;D.float*P=1024:解析:解析:考查指针变量的初始化。只能把对应类型的变量的地址赋值给指针,选项 B 错误;定义指针时要加上“*”标明该变量为一个指针变量,选项 C 错误;不能把一个整数直接赋值给指针变量,选项 D错误;所以答案选 A。36.以下叙述中正确的是( )。(分数:2.00)A.在 C 语言中,预处理命令行都以#开头 B.预处理命令行必须位于 C 源程序的起始位置C.#include 必须放在 C 程序的开头D.C 语言的预处理不能实现宏定义和条件编译的功能解

23、析:解析:c 语言中,凡是以“#”开头的都被称为编译预处理行,选项 A 正确;预处理行可以放在 C源程序的任何位置,习惯放在起始位置,选项 B 错误;语句“#include”必须放在使用文件 stdioh 中相关方法的语句之前,但是不一定非要放在 C 程序开头,选项 C 错误;预处理包括宏定义、文件包含和条件编译等,选项 D 错误。答案选 A。37.有以下程序: #include int funl(int a,int b) return a+b; int flun2(int a,int b) retum ab; int fun(int(*t)(int,int),int x,int y) ret

24、urn(*t)(x,y); main() int x; x=fun(funl,9,3); x+=fun(fun2,8,3); printf(“dn”,x); 程序运行后的输出结果是( )。(分数:2.00)A.24B.23C.17 D.22解析:解析:本题主要考查函数作为形参时的使用,由 x=fun(funl,9,3);可得到 x=9+3=12,而后直接传入函数 flin2,x=x+83=12+5=17。故 C 选项正确。38.有以下程序: #include void sp(int*a) int b=2; a=b: *a=*a*2: prinff(“d,”,*a); main() int k=

25、3,*p=&k; sp(p); pfinff(“d,dn”,k,*p); 则程序的输出结果是( )。(分数:2.00)A.4,3,3 B.4,3,4C.6,3,6D.6,6,6解析:解析:首先在主函数中给整型变量 k 赋值为 3,将变量 k 的地址赋给指针变量 p,调用 sp 函数,将实参 p 的值传给形参 a,在 sp 函数中,指针变量 a 又获得变量 b 的地址,通过运算后,输出 a 的值为 4,返回主函数,输出 k 的值和 p 的值为 3 和 3。故 A 选项正确。39.有以下程序: #include void my() char ch: ch=getchar(); if(ch!=c)m

26、y(); putchaur(ch); main() my(); 执行时,输入 abc,则输出结果是( )。(分数:2.00)A.abcB.ababcC.bcaD.cba 解析:解析:my()递归,直到输入了 c 开始返回。递归使用的是栈的思想,因此最后输入进去的最先返回并输出。所以结果是 cba。40.有以下程序: #include mmn() unsigned chaur a=8,c; c=a3: pnnff(“dn”,c); 程序运行后的输出结果是( )。(分数:2.00)A.32B.16C.1 D.0解析:解析:字符常量与其 ASC码值一一对应,在计算的时候,可以使用该字符的 ASC码参与运算,输出时会根据格式控制符输出对应的字符或者 ASC码。右移运算符“”的运算规则是把左边运算数的各二进制位全部右移 n 位,n 取决于“”右边的数值。字符 a 的 ASC码值为 8,对应二进制为 1000,所以 a3=1,输出的字符 c 的 ASC码值为 1,答案选 C。

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