【计算机类职业资格】国家二级(C语言)机试模拟试卷138及答案解析.doc
《【计算机类职业资格】国家二级(C语言)机试模拟试卷138及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级(C语言)机试模拟试卷138及答案解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级(C 语言)机试模拟试卷 138 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.在下列数据结构中,支持子程序调用的是( )。(分数:2.00)A.循环队列B.树C.栈D.二叉树2.关于计算机栈和队列的叙述中正确的是( )。(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构3.设二叉树中度为 2 的节点有 8 个,则叶子节点数是( )。(分数:2.00)A.10B.8C.6D.94.下列排序方法中,最坏情况下比较次数最少的是(
2、 )。(分数:2.00)A.堆排序B.简单选择排序C.直接插入排序D.冒泡排序5.计算机软件通常分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。(分数:2.00)A.编译程序B.操作系统C.图书借阅系统D.汇编程序6.关于软件测试和调试的叙述中错误的是( )。(分数:2.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性7.关于耦合性和内聚性的叙述中正确的是( )。(分数:2.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦
3、合性提高内聚性有利于提高模块的独立性C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度8.计算机数据库管理系统中的核心问题是( )。(分数:2.00)A.数据库管理B.数据库设计C.数据库维护D.数据库管理员培训9.有两个关系 R、S 如下: (分数:2.00)A.并B.投影C.插入D.自然连接10.软件设计过程中的 E 一 R 图转换为关系时,其中的实体和联系都可以表示为( )。(分数:2.00)A.属性B.键C.关系D.域11.关于程序设计结构的叙述中错误的是( )。(分数:2.00)A.结构化程序设计提倡模块化的设计方法B.结构化程序由顺序、分支
4、、循环三种基本结构组成C.C 语言是一种结构化程序设计语言D.使用三种基本结构构成的程序只能解决简单问题12.以下四个程序中,完全正确的是( )。(分数:2.00)A.#includestdioh main(); *programming pfintf(programming!n);B.#includestdioh main() *programming* pfintf(programming!n);C.#includestdioh main() *programming* pfintf(programming!n);D.includestdioh main() *programming* p
5、fintf(programming!n);13.设 int x=5,则表达式 x 一=x+x 的值为( )。(分数:2.00)A.0B.一 10C.一 5D.514.C 程序中合法的用户标识符的是( )。(分数:2.00)A._0_B.1_aC.intD.unsigned15.下列规格的数在 C 语言源程序中不合法的是( )。(分数:2.00)A.十进制B.八进制C.十六进制D.二进制16.有以下程序: #include main() intx=10,y=5; printf(d,y=x+y); printf(dn,x=2*y); 程序运行后的输出结果是( )。(分数:2.00)A.15,30B
6、.10,30C.5,10D.5,1517.有以下程序: #include main() int al,a2;char c1,c2; scanf(dcdc,&a1,&e1,&a2,&c2); printf(d,d,c,c,a1,a2,c1,c2); 若想通过键盘输入,使得输出结果是:12,34,a,b。则正确的输入格式是(以下代表空格,代表回车)( )。(分数:2.00)A.12a34bCRB.12a34bCRC.12,a,34,bCRD.12a34bCR18.关于分支语句 if(E)printf(dn,k);中,不可以替代 E 的表达式是( )。(分数:2.00)A.ab+c B.ch=get
7、char()C.a=b+cD.a+解析:解析:在数学上有时候会使用表示不等于,但在 C 语言中没有这种表达方式,所以 A 的表达式有误,其它选项均可以替代 E,用来进行条件判断。19.有以下程序段: #include main() int a,b,c; a=10;b=20;c=30; if(ab)a=b,b=c;c=a; printf(a=d b=d c=dn,a,b,c); 程序运行后的输出结果是( )。(分数:2.00)A.a=10 b=20 c=30B.a=10 b=20 c=10 C.a=10 b=30 c=10D.a=20 b=30 c=20解析:解析:此题结合 if 语句考查逗号表
8、达式。if 语句后面只执行一个语句,即以分号结束的一个语句。或用大括号包围的多条语句,此题中 if 后面是一个逗号表达式,若 if 条件为真,则执行此逗号语句,本题中 if 条件为假,所以此逗号表达式不会执行,所以程序将只执行 c=a;这一句,所以 a 和 b 的值没有发生变化。20.关于 switch 语句的叙述正确的是( )。(分数:2.00)A.在 switch 语句中,不一定使用 break 语句 B.在 switch 语句中必须使用 defaultC.break 语句只能用于 switch 语句D.switch 语句中,必须使用 break 语句解析:解析:break 用于跳出 sw
9、itch 分支语句,若不使用 break 语句将继续执行此分支语句后面的分支语句,因此,不使用 break 语句不会出现语法错误,也不一定必须使用 break 语句,break 语句除了在switch 语句中使用外,也可以用于跳出循环语句,所以 A 正确,C、D 不正确。default 语句也不是必需的。21.下列选项中,不会出现无限循环的是( )。(分数:2.00)A.for(n=0,i=3;i+)n+=i;B.n=0; while(1);n 一一;C.n=1; while(n);n 一=2;D.n=一 3; do+n;while(n0); 解析:解析:无限循环是指循环变量一直为真的情况。选
10、项 A 中没有条件判别式,注意前面两个赋值语句中间是逗号,两个分号中间为空,所以会出现无限循环;选项 B 中的 while 条件变量是恒为真的常量,选项 C 看似循环变量 n 会在循环体内通过减操作成为负数,但注意到 while(n)后面紧跟的分号,此分号代表一个空语句,因此也是无限循环;只有 D 选项中会正常结束循环。22.有以下程序: #include main() int s=5,i; for(i=1;i3;i+) switch(i) default:s+=i; case 2:s+;break; case 4:s+=2;break; printf(dn,s); 程序运行后的输出结果是(
11、)。(分数:2.00)A.7B.8 C.9D.10解析:解析:在 switch 语句中一般会将 default 语句放在最后,作为最后一个分支,所以通常后面不会跟 break 语句,但本题中将 default 放在了最前面,所以其后要跟 break 才不会出现误操作,但本题中没有 break,所以要仔细分析。for 循环只执行 2 次,第 1 次 i=1,此时执行 switch 语句中的 default 语句。但因为后面没有 break 语句,所以会继续执行 case 2 语句,并在碰到其后的 break 语句后跳出 switch 语句,此时 s=7;当执行第 2 次 for 循环是。i=2,
12、此时只执行 s+一句,所以结果是 s=8。23.有以下程序: #include int fun(int x,int y) return(2*x*y); main() int a=1,b=2,c=3,d; d=fun(fun(a,b),fun(a,c); printf(dn,d); 程序运行后的输出结果是( )。(分数:2.00)A.12B.24C.48 D.36解析:解析:子函数的功能比较简单,此题主要考查主函数的多次调用,fun(1,2)=4,fun(1,3)=6,所以最后结果是 fun(4,6)=2*4*6=48。24.设 double x,y,*px=&x,*py=&y;则正确的输入语句
13、是( )。(分数:2.00)A.scanf(lflf,px,Py); B.scanf(ff&x,&y);C.scanf(ff,x,y);D.scanf(lflf,x,y);解析:解析:double 型数据的输入格式是lf,接收输入的应该是变量的地址,所以 B、C、D 有误。25.关于 double a,*p=&a;的叙述中错误的是( )。(分数:2.00)A.定义语句中的&是一个地址运算符B.定义语句中的*是一个指针变量说明符C.定义语句中的 P 可以存放 double 以外数据类型变量的地址 D.定义语句中的*p=&a 把变量 a 的地址作为初值赋给指针变量 p解析:解析:指针变量在定义时便
14、指定了其类型,本题中 double*p 的定义,说明 p 只能存放 double 类型变量的地址。其他选项正确。26.C 语言中的数组定义语句中不正确的是( )。(分数:2.00)A.int a3=1,2,3,4,5,6;B.int a241=1,2,3,4,5,6; C.int a=1,2,3,4,5,6;D.int a4=1,2,3,4,5,6;解析:解析:定义数组时一维数组可以不指定列数,二维数组可以不指定行数,系统将根据输入的数据来决定,但如果指定了具体的行列数,赋值时就必须按照行列数输入,选项 B 定义了 2 行但输入却是 3 行,所以错误。27.有以下程序: #include vo
15、id ex(int a,int b) int t; t=a;a=b;b=t; main( ) int c8=8,7,6,5,4,3,2,1,i; for(i=0;i8;i+=2)ex(ci,ci+1); for(i=0;i8;i+)printf(d,ei); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.1,2,3,4,5,6,7,8B.2,1,4,3,6,5,8,7C.8,7,6,5,4,3,2,1 D.7,8,5,6,3,4,1,2解析:解析:子函数的功能是进行数据交换,但注意到形参是值传递,所以不会影响实参的值,因此,数组的值不会发生变化。28.有以下程序:
16、#include main() int x32=0,i; for(i=0;i3;i+)scanf(d,xi);printf(3d3d3dn,x00,x10,x11); 若运行时输入:1 3 5,则输出结果为( )。(分数:2.00)A.1 0 3B.1 0 0C.1 3 0 D.1 3 5解析:解析:数组赋初值后各元素的值均为 0,scanf 中接收输入的地址是 xi,所以输入的 1,3,5 分别赋给了 x00,x10,x20,因此输出的结果是 1 3 0。29.有以下程序段: #include int x;float y;char s10; scanf(3dfs,&x,&y,name);当执
17、行上述程序段,从键盘上输入 12345 568Tom 后,y 的值为( )。(分数:2.00)A.450 B.5680C.455680D.4505680解析:解析:scanf 输入时是严格按照格式接收数据的,3d 只接收 3 位整数作为 x 的值,所以 y 的值是45,因为后面有个空格将会作为 s 的值,s 的值是 568Tom。30.下列语句组中正确的是( )。(分数:2.00)A.char*s;s=Chinese;B.char s 7;s=Chinese;C.char*s;s=Chinese; D.char s 7;s=Chinese;解析:解析:字符串赋值时只用双引号,不用大括号,所以
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 模拟 试卷 138 答案 解析 DOC
