[计算机类试卷]国家二级(C++)机试模拟试卷13及答案与解析.doc

上传人:inwarn120 文档编号:502411 上传时间:2018-11-29 格式:DOC 页数:28 大小:88.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷13及答案与解析.doc_第1页
第1页 / 共28页
[计算机类试卷]国家二级(C++)机试模拟试卷13及答案与解析.doc_第2页
第2页 / 共28页
[计算机类试卷]国家二级(C++)机试模拟试卷13及答案与解析.doc_第3页
第3页 / 共28页
[计算机类试卷]国家二级(C++)机试模拟试卷13及答案与解析.doc_第4页
第4页 / 共28页
[计算机类试卷]国家二级(C++)机试模拟试卷13及答案与解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 13及答案与解析 一、选择题 1 一个栈的初始状态为空。现将元素 1、 2、 3、 4、 5、 A、 B、 C、 D、 E依次入栈,然后再依次出栈,则元素出栈的顺序是 ( )。 ( A) 12345ABCDE ( B) EDCBA54321 ( C) ABCDEl2345 ( D) 54321EDCBA 2 下列叙述中正确的是 ( )。 ( A)循环队列有队头和队尾两个指针,因此循环队列是非线性结构 ( B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 ( C)在循环队列 中,只需要队尾指针就能反映队列中元素的动态变化情况 ( D)循环队列中元素

2、的个数是由队头指针和队尾指针共同决定 3 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 ( )。 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) 0(nlog2n) 4 下列叙述中正确的是 ( )。 ( A)顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 ( C)顺序存储结构能存储有序 表,链式存储结构不能存储有序表 ( D)链式存储结构比顺序存储结构节省存储空间 5 数据流图中带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)事件驱动 (

3、C)模块调用 ( D)数据流 6 在软件开发中,需求分析阶段可以使用的工具是 ( )。 ( A) N-S图 ( B) DFD图 ( C) PAD图 ( D)程序流程图 7 在面向对象方法中,不属于 “对象 ”基本特点的是 ( )。 ( A)一致性 ( B)分类性 ( C)多态性 ( D)标识唯一性 8 一间宿舍可住多个学生,则 实体宿舍和学生之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 9 在数据管理技术发展的 3个阶段中,数据共享最好的是 ( )。 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D) 3个阶段相同 10 有

4、3个关系 R、 S和 T如下: 由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)笛卡儿积 ( B)交 ( C)并 ( D)自然连接 11 下列叙述正确的是 ( )。 ( A) C程序的基本组成单位是语句 ( B) C程序中的每一行只能写一条语句 ( C)简单 C语句必须以分号结束 ( D) C语句必须在一行内写完 12 计算机能直接执行的程序是 ( )。 ( A)源程序 ( B)目标程序 ( C)汇编程序 ( D)可执行程序 13 下列选项中不能作为 C语言合法常量的是 ( )。 ( A) cd ( B) 100000 ( C) a ( D) 011 14 下列选项中

5、正确的定义语句是 ( )。 ( A) double a b; ( B) double a=b=7; ( C) double a=7, b=7 ( D) double, a, b; 15 下列不能正确表示代数式 2ab/cd的 C语言表达式是 ( )。 ( A) 2*a*b c d ( B) a*b c d*2 ( C) a c d*b*2 ( D) 2*a*b c*d 16 C源程序中不能表示的数制是 ( )。 ( A)二进制 ( B)八进制 ( C)十进制 ( D)十六进制 17 若有表达式 “(w)?(-x): (+y)”,则其中与 w等价的表达式是 ( )。 ( A) w=1 ( B)

6、w=O ( C) w!=1 ( D) w!=0 18 执行下列程序后, w的值为 ( )。 int w=A, x=14, y=15; w=(xy)&(w a); ( A) -1 ( B) NULL ( C) 1 ( D) 0 19 若变量已正确定义为 int型,要通过语句 “scanf(“ d, d“, &a, &b, &c); ”给a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 ( 代表一个空格符 )( )。 20 有下列程序段: int a, b, c; a=10; b=50; c=30; if(a b)a=b b=c; c=a; printf(“a= db= d c=

7、 d n“, a, b, c); 程序的输出结果是 ( )。 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 21 若有定义语句 “int m=5, 4, 3, 2, 1), i=4; ”则下列对 m数组元素的引用中错误的是 ( )。 ( A) m-i ( B) m2*2 ( C) mm0 ( D) mmi 22 下面的函数调用语句中 func函数的实参个数是 ( )。 func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8); ( A) 3 (

8、 B) 4 ( C) 5 ( D) 8 23 若有定义语句 “double x5=1 0, 2 0, 3 0, 4 0, 5 O), *p=x”,则错误引用 x数组元素的是 ( )。 ( A) *p ( B) x5 ( C) *(p+1) ( D) *x 24 若有定义语句 “char silO=“1234567 0 0“; ”,则 strlen(s)的值是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 25 下列叙述中错误的是 ( )。 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数

9、值 ( C)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( D)函数的 return语句中可以没有表达式 26 下列关于宏的叙述中正确的是 ( )。 ( A)宏名必须用大写字母表示 ( B)宏定义必须位于源程序中所有语句之前 ( C)宏替换没有数据类型限制 ( D)宏调用比函数调用耗费时间 27 有下列程序: #includevoid main() int i, j; for(i=3; i =1; i-) for(j=1; j=2; j+)printf(“ d “, i+j); printf(“ n“); 程序的运行结果是 ( )。28 有下列程序: #inclu

10、de void main() int x=1, y=2, z=3; if(x y) if(y z)printf(“ d“, +z); else printf(“ d“, +y); printf(“ d n“, x+); 程序的运行结果是 ( )。 ( A) 331 ( B) 41 ( C) 2 ( D) 1 29 有下列程序: #include void main() int i=5; do if(i 3=1) if(i 5=2) printf(“* d“, i); break; i+: while(i!=0); printf(“ n“); 程序的运行结果是 ( )。 ( A) *7 ( B)

11、 *3*5 ( C) *5 ( D) *2*6 30 有下列程序: #include int fun(int a, int b) if(b=0) return a: else return(fun(-a, -b); void main() printf(“ d n“, fun(4, 2); 程序的运行结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 31 有下列程序: #include #include int fun(int n) int * p; p=(int*)malloc(sizeof(int); *p=n; return *P: void main() int

12、 a; a=fun(10); printf(“ d n“, a+fun(10); 程序的运行结果是 ( )。 ( A) 0 ( B) 10 ( C) 20 ( D)出错 32 有下列程序: #include void fun(int a, int b) int t; t=a; a=b; b=t; void main() int c10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0), i; for(i=0; i struct st int x, y, date2=1, 10, 2, 20); void main() struct st *p=date; printf(“ d, “,

13、 p- y); printf(“ d n“, (+p)- x); 程序的运行结果是 ( )。 ( A) 10, 1 ( B) 20, 1 ( C) 10, 2 ( D) 20, 2 34 有下列程序: #include void fun(int a, int n) int i, t; for(i=0; i n 2; i+)t=ai; ai=an-1-i; an-1-i=t; void main() int k10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i; fun(k, 5); for(i=2, i 8; i+)print(“ d“, ki); printf(“ n“

14、); 程序的运行结果是 ( )。 ( A) 345678 ( B) 876543 ( C) 1.09877e+006 ( D) 321678 35 有下列程序: #include #define N 4 void fun(int aEN, int b) int i; for(i=0; i N, i+)bi=aii; void main() int xN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, yN, i; fun(x, y); for(i=0; i n; i+)printf(“ d, “, yi); printf(“ n“); 程序的运行结果是 ( )。 ( A) 1,

15、2, 3, 4, ( B) 1, 0, 7, 0, ( C) 1, 4, 5, 9, ( D) 3, 4, 8, 10, 36 有下列程序: #include int un(int(*s)4, int n, int k) int m, i; m=s0Ek; for(i=1; i n; i+) if(sik m)m=sik; return m; void main() int a44=1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32,33, 34; printf(“ d n“, fun(a, 4, 0); 程序的运行结果是 ( )。 ( A)

16、4 ( B) 34 ( C) 31 ( D) 32 37 有下列程序: #include void main() stuct STUchar name9; char sex; double score2; ; stuct STU a=“Zhao“, m, 85 0, 90 0), b=“Qian“, f, 95 0, 92 0; b=a; printf(“ s, c, 2 0, 2 0 n“, b name, b sex, b score0,bscore1); 程序的运行结果是 ( )。 ( A) Qian, f, 95, 92 ( B) Qian, m, 85, 90 ( C) Zhao,

17、f, 95, 92 ( D) Zhao, m, 85, 90 38 假定已建立以下链表结构,且指针 p和 q已指向如下图所示的结点:则下列选项中可将 q所指点从链表中删除并释放该结点的语句组是 ( )。 ( A) (*p) next=(*q) next; free(p); ( B) p=q- next; free(q); ( C) p=q; free(q); ( D) p- next=q- next; free(q); 39 有下列程序: #include void main() char a=4; printf(“ d n“, a=a void main() FILE *pf; char *

18、s1=“China“, *s2=“Beijing“: pf=fopen(“abCdat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abc.dat文件的内容是 ( )。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 二、基本操作题 41 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:

19、TC1: 0 TC2 注意:不要改动 main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 * * * * * * error * * * * * *的下面。 试题程序: #include struct TC1 TC1(int i=0) m_i=i; void print() cout 必须使用递归 int funl(int n) 不能使用递归 int fun2(int n) void main() int i; couti; cout class TCFruit private: float Weight; * * * * * * * * 1 * * * * * * * * s

20、tatic int AllNo; public: TCFruit(float w) * * * * * * * * 2 * * * * * * * * AllWeight+=w: AllNo+: TCFruit() * * * * * * * * 3 * * * * * * * * AllWeight-=Weight; void display() couty)不成立,直接执行 printf(“ dn“, x+1);语句,输出 x的值 1,再把 x加 1。 29 【正确答案】 A 【试题解析】 本题考查 dowhile 循环,先执行循环 体,再判断条件是否成立,函数实现的功能是找出满足一个数,

21、它除 3时余 1,除 5时余 2,然后打印 “*”和这个数从 5开始,等于 7时恰好符合条件,输出,最后循环结束。 30 【正确答案】 B 【试题解析】 本题考查递归函数的使用。 fun(4, 2)-fun(2, 0),由于 b等于 0,故返回值为 2。反之, fun(4, 2)=2。 31 【正确答案】 C 【试题解析】 本题考查指针与函数的调用。 a+fun(10)相当于 fun(10)+fun(10),故结果为 20。两次调用 fun()函数,返回值指向不同的内 存单元,不会存在内存冲突的问题,也就不会走错。 32 【正确答案】 A 【试题解析】 在程序中实参向形参传递数据的方式是 “值

22、传递 ”,如果实参传递给形参是变量的值,就是数值传递,并不能改变实参的值,所以数组 c10的值不变。 33 【正确答案】 C 【试题解析】 data2是两个结构体组成的数组, p指向结构体数组的首地址, p-y访问第一个结构体的第二个元素; (+p)x访问第二个结构体的第一个元素。所以输出为 10, 2。 34 【正确答案】 D 【试题解析】 在程序中, fun(k, 5)的功能是将数组 k的 k0、 k1分别与 k3、k4交换, for循环从 k2到 k8输出,所以输出结果为 321678。 35 【正确答案】 B 【试题解析】 本题考查数组的初始化,在对二维数组元素赋初值时,如果只对部分元

23、素赋初值,那未赋初值的元素自动取 0。 fun函数是将二维数组 a中主对角线上的元素赋给数组 b,所以 y4=1, 0, 7, 0。 36 【正确答案】 C 【试题解析】 在程序中 fun函数的功能在于求取二维数组 S中 1至 n行中每行第k个元素中的最大者。注意 : i=0时为第一行,故 fun(a, 4, 0)在于求取 11、 21、31中的最大值,显然为 31。 37 【正确答案】 D 【试题解析】 对于两个结构体, b=a;表示将 a的每一个元素都赋给 b,所以会输出 a中的内容。 38 【正确答案】 D 【试题解析】 在以下 4项中,根据链表插入与删除的原则,选项 A中, *p是 p

24、所指向的元素,所以这样调用是错误的;选项 B是将 p指向的结点作为 q的后继结点;而选项 C则是将指针 q指向 P指向的结点;选项 D将指向 q的后继点的指针赋给指向 p后继点的指针,并将 q指向结点所占的内 存。所以选项 D正确。 39 【正确答案】 C 【试题解析】 本题考查位操作,将 4转化成二进制为 0100,左移一位后为1000,转成十进制为 8,所以输出 8。 40 【正确答案】 B 【试题解析】 本题考查 fwrite的调用形式。 其格式为 “fwrite(buffer, size, count, fp); ”。 fwritie函数的功能是对 fp所指向的文件存入 count次,

25、每次存入一个大小为size的数据块,将存入的数据块存到 buffer指向的内存区,如果 buffer内存区有数据则将 其覆盖。 本题中第一次调用 fwrite函数,向文件中写入是 S2的值 “Beijing”,第二次调用fwrite函数,向文件中写入 S1的值 “China”,并将之前 “Beijing”的前几个字符覆盖,得到 Chinang。 二、基本操作题 41 【正确答案】 (1)应改为 “public: ”。 (2)应改为 “TC1 obil(0); ”或 “TC1 obj1; ”。 (3)应改为 “TC2 obj2; ”。 【试题解析】 本题第 1处的 “private: TC2()

26、”是析构函数,它不是私有的,所以这里应该删除 “private: ”或修改为 “public: ”。第 2处的 “TC1 obj1(); ”语句是定义一个 TC1类型的对象 obj1(),根据类 TC1构造函数的定义 “TC1(int i=0)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为 “TC1 obj1(0);或 TC1 obj1; ”。第 3处的 “TC2 obj2(); ”语句修改为 “TC2 obj2; ”。 三、简单应用题 42 【正确答案】 必须使用递归 int funl(int n) if(n(类名 : (静态数据成员 =初始值 )”,因此第 4处应添加 “int TCFruit: AllNo=0; ”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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