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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C+)机试模拟试卷 11及答案与解析 一、选择题 1 程序流程图中带有箭头的线段表示的是 ( )。 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 2 结构化程序设计的基本原则不包括 ( )。 ( A)多态性 ( B)自顶向下 ( C)模块化 ( D)逐步求精 3 软件设计中模块划分应遵循的准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)可行性分析报告 ( B)软件需求规格说明书 ( C)概要设计说明书 ( D)集成设计计划 5 算法的有穷

2、性是指 ( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 6 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1) 2的排序方法是 ( )。 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 7 下列关于栈的叙述正确的是 ( )。 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段 ( B)

3、概念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 有 3个关系 R、 S和 T如下: 由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)并 ( B)自然连接 ( C)笛卡儿积 ( D)交 10 设有表示学生选课的 3张表,学生 S(学号、姓名、性别、年龄、身份证 号 )、课程 C(课号、课名 )、选课 SC(学号、课号、成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号、成绩 ( B)学号、成绩 ( C)学号、课号 ( D)学号、姓名、成绩 11 下列叙述中正确的是 ( )。 ( A) C程序中的注释只能出现在程序的开始位置和语句的后面 (

4、B) C程序书写格式严格,要求一行内只能写一个语句 ( C) C程序书写格式自由,一个语句可以写在多行上 ( D)用 C语言编写的程序只能放在一个程序文件中 12 下列选项中不合法的标识符是 ( )。 ( A) print ( B) FOR ( C) &a ( D) 0 13 下列选项中不属于字符常量的是 ( )。 ( A) C ( B) C ( C) xCC ( D) 072 14 设变量已正确定义并赋值,以下正确的表达式是 ( )。 ( A) x=y*5=x+z ( B) int(15 8 5) ( C) x=y+z+5, +y ( D) x=25 5 0 15 以下定义语句中正确的是 (

5、 )。 ( A) int a=b=0; ( B) char A=65+1, b=b; ( C) float a=1, “b=&a, “c: &b; ( D) double a=0 0 b=1 1; 16 有下列程序段: char ch; int k; ch=a; k=12; printf(“ c, d, “, ch, ch, k); printf(“k= d n“, k); 已知字符 a的 ASCII十进制代码为 97,则执行上述程序段后输出结果是 ( )。 ( A)因变量类型与格式描述符的类型不匹配输出无定值 ( B)输出项与格式描述符个数不符,输出为零值或不定值 ( C) a, 97, 1

6、2k=12 ( D) a, 97, k=12 17 已知字母 A的 ASCII代码值为 65,若变量 kk为 char型,下列不能正确判断出kk中的值为大写字母的表达式是 ( )。 ( A) kk =A&kk=Z ( B) !(kk =Akk =Z) ( C) (kk+32) =a&(kk+32) =z ( D) isalpha(kk)&(kk =91) 18 当变量 c的值不为 2、 4、 6时,值也为 “真 ”的表达式是 ( )。 ( A) (c=2)(c=4)(c=6) ( B) (c =2&C =6)(c! =3)(c! =5) ( C) (c =2&c -6)&! (c 2) ( D

7、) (c =2&c =6)&(c 2! =1) 19 若变量已正确定义,有下列程序段 int a=3, b=5, c=7; if(a b)a=b; c=a; if(c!=a)c=b; printf(“ d, d, d n“, a, b, c); 其输出结果是 ( )。 ( A)程序段有语法错 ( B) 3, 5, 3 ( C) 3, 5, 5 ( D) 3, 5, 7 20 有下列程序: #include void main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+br

8、eak; case 2: a+ b+; break; case 3: a+ b+; printf(“a= d, b= d n“, a, b); 程序的运行结果是 ( )。 ( A) a=1, b=0 ( B) a=2, b=2 ( C) a=1, b=1 ( D) a=2, b=1 21 有下列程序: #include void main() int x=8: for(; x 0; X-) if(x 3)printf(“ d, “, x-); continue; ) printf(“ d, “, -x); 程序的运行结果是 ( )。 ( A) 7, 4, 2 ( B) 8, 7, 5, 2 (

9、 C) 9, 7, 6, 4 ( D) 8, 5, 4, 2 22 下列不构成无限循环的语句或语句组是 ( )。 ( A) n=0; ( B) n=0: do+n; )while(n =0); while(1)(n+; ( C) while(n-10); (n=; ( D) for(n=0, i=1; i+)n+=i 23 有下列程序: #include void main() int a=1, 2, 3, 4), y, *p=&aE3; -p; y=*p; printf(“y= d n“, y); 程序的运行结果是 ( )。 ( A) y=0 ( B) y=1 ( C) y=2 ( D) y

10、=3 24 下列错误的定义语句是 ( )。 ( A) int x3=0, 1, 1, 2, 3; ( B) int x43=1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3; ( C) int x4=1, 2, 3, 1, 2, 3), 1, 2, 3, 1, 2, 3; ( D) int x3=1, 2, 3, 4; 25 设有下列程序段: char s20=“Beijing“, *p; p=s; 则执行 “p=s; ”语句后,下列叙述正确的是 ( )。 ( A)可以用 *p表示 s0 ( B) s数组中元素的个数和 p所指字符串长度相等 ( C) s和 p都是指针变量

11、( D)数组 s中的内容和指针变量 p中的内容相同 26 若有定义 “int a23; ”,下列选项中对 a数组元素正确引用的是 ( )。 ( A) a2! 1 ( B) a23 ( C) a03 ( D) a1 2! 1 27 有定义语句 “char s10; ”,若要从终端给 S输入 5个字符,错误的输入语句是( )。 ( A) gets(&s0); ( B) scanf(“ s“, s+1); ( C) gets(s); ( D) scanf(“ s“, s1); 28 下列叙述中错误的是 ( )。 ( A)在程序中凡是以 “#”开始的语句行都是预处理命令行 ( B)预处理命令行的最后不

12、能以分号表示结束 ( C) #define MAX是合法的宏定义命令行 ( D) C程序中预处理命令行的处理是在程序执行的过程中进行的 29 下列结构体类型说明和变量定 义中正确的是 ( )。30 下列叙述中错误的是 ( )。 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 31 有下列程序: #include void main() int s12=1, 2, 3, 4, 4, 3, 2, 1, 1, 1, 2, 3, c5=0, i; f

13、or(i=0; i 12; i+)csi+; for(i=1; i 5; i+)printf(“ d “, ci); printf(“ n“) 程序的运行结果是 ( )。 ( A) 1 2 3 4 ( B) 2 3 4 4 ( C) 4 3 3 2 ( D) 1 1 2 3 32 有下列程序: #include void fun(int*s, int n1, int n2) int i, j, t; i=n1; j=n2 while(i j)t=si; si=sj; sj=t; i+; j-; void main() int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0),

14、 k; fun(a, 0, 3); fun(a, 4, 9); fun(a, 0, 9); for(k=0; k 10; k+)printf(“ d“, ak); printf(“ n“); 程序的运行结果是 ( )。 ( A) 0987654321 ( B) 4.3211e+009 ( C) 5.6789e+009 ( D) 9.87651e+008 33 有下列程序: #include #include“string h“ void fun(char*s, int n) char*t; int i, j for(i=0; i n-1; i+) for(j=i+1; j n; j+) if(

15、strlen(si strlen(sj)t=si; si=sj; sj=t; void main() char*ss=“bcc“, “bbcc“, “xy“, “aaaacc“, “aabcc“; fun(ss, 5); printf(“ s, s n“, ss0, ss4); 程序的运行结果是 ( )。 ( A) xy, aaaacc ( B) aaaacc, xy ( C) bcc, aabcc ( D) aabcc, bcc 34 有下列程序: #include int f(int x) int y; if(x=0x=1)return(3); y=x*x-f(x-2); return y

16、; void main() int z: z=f(3); printf(“ d n“, z); 程序的运行结果是 ( )。 ( A) 0 ( B) 9 ( C) 6 ( D) 8 35 有下列程序: #include void fun(char*a, char*b) while(*a=*)a+; while(*b=*a)b+; a+; ) void main() char*s=“*a*b*“, t80; fun(s, t); puts(t) 程序的运行结果是 ( )。 ( A) *a*b ( B) a*b ( C) a*b* ( D) ab 36 有下列程序: #include #includ

17、e“string h“ typedef structchar name9; char sex; float score2; STU; void f(STU a) STU b=“Zhao“, m, 85 0, 90 0); int i; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; void main() STU c=“Qian“, f, 95 0, 92 0); f(c); printf(“ s, c, 2 of, 2 of n“, c.name, c.sex,c.score0, c.score

18、1); 程序的运行结果是 ( )。 ( A) Qian, f, 95, 92 ( B) Qian, m, 85, 90 ( C) Zhao, f, 95, 92 ( D) Zhao, m, 85, 90 37 有下列程序: #include void main() FILE*fp; int a10=1, 2, 3), i, n; fp=fopen(“d1 dat“, “w“); for(i=0; i 3; i+)fprintf(fp, “ d“, ai); fprintf(fp, “ n“); fclose(fp); fp=open(“d1 dat“, “r“) fscanf(fp, “ d“

19、, &n); fclose(fp); printf(“ d n“, n); 程序的运行结果是 ( )。 ( A) 12300 ( B) 123 ( C) 1 ( D) 321 38 变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000,若要求将 a的高 4位取反,低 4位不变,所要执行的运算是 ( )。 ( A) a*b ( B) a b ( C) a&b ( D) a class TC public: TC(int i) number=i; void SetNumber(int m) number=m; int GetNumber()

20、const return number; void Print()const cout void fun(int a, int n, int b, int m, int*c) void main() int A=3, 5, 7, 9, 11, 18, 21; int B=6, 15, 19, 21, 39; int C25, i; for(i=0; i(25; i+) Ci=0; cout class People public; * * * * * * * * 1 * * * * * * * * int i; for(i=0; sUserNamei!=0; i+) m_UserNamei=s

21、UserNamei; * * * * * * * * 2 * * * * * * * * m_Old=nOld; private: char m_UserName32; int m_Old; * * * * * * * * 3 * * * * * * * * ; void fun(char*s, People&person1, People&person2) * * * * * * * * 4 * * * * * * * * if() for(int i=0; person1 m_UserNamei!=0; i+) si=person1 m_UserNamei; si+1=0; else fo

22、r(int i=0; person2 m_UserNamei!=0; i+) si=person2 m_UserNamei; si+1=0; void main() char s32; People p1(“abc“, 20); People p2(“def“, 30); fun(s, p1, p2); touta和 (kk+32)b不成立,故不执行 “a=b”,接着执行 “c=a”,把 c的值赋给 a后,此时第二个 if条件不成立,故不执行其后语句,最终点 c的值为 3。 20 【正确答案】 D 【试题解析】 本题考查的是 switchcase 分支语句, x=1时,首先执行 case 1进

23、行嵌套判断, y=0时 switch(0)成立,执行 case 0, a自加 1,遇到 break,退出嵌套,接着执行 case 2, a自加为 2, b自加为 1,遇到 break,结束循环,此时a=2, b=1,故选项 D正确。 21 【正确答案】 D 【试题解析】 x-后缀表示先用 x的值再令 x减 1, -x前缀表示先将 x减 1,再执行程序,则输出 (x-)继续下一次循环,输出 “8, ”,此时 x自减值变为 7,执行 x-, x=6, x 3=0,后面语句不执行,执行语句 “printf(“ d, ”, -x); ”,输出 “5”,继续 for循环中的 x-,得到 x=5,输出 “

24、5”;判断 x 3为真,输出 “4”, 执行两次x-后, x=2,执行 “printf(“ d“, x-); cotinue; ”后,输出 “2”;然后执行两次x-后, x=0,不符合 “x 0”,循环结束。 22 【正确答案】 A 【试题解析】 选项 B中 while(1)永远为真,一直自加下次进入死循环;选项 C中while(n=10)同理死循环,没有下限范围;选项 D中 for循环中 i也没有循环限定条件也将进入死循环;只有选项 A中 while(n =0)循环判定成立,循环结束。 23 【正确答案】 D 【试题解析】 本题定义一个一维数组和 指针,接着将数组第 4个元素的地址赋予*P数

25、组下标从 0开始,进行 -p使指针 P指向了数组的第 3个元素,通过 y=*p将数组第 3个元素的值 3赋予 y,所以选项 D正确。 24 【正确答案】 C 【试题解析】 本题考查数组的定义一维数组定义和初始化是允许省略行下标,不允许省略列下标,故选项 C错误。 25 【正确答案】 A 【试题解析】 程序定义了字符数组 s和字符型指针变量 p,并且使 p指向数组 s的首地址,执行 p=s语句后, *p表示 sO; s数组中元素的个数和 p所指字符串长度不相等, s数组中包括字符串 结束标志 “ 0”,而 p所指字符串不包括 “ 0”,数组 s中的内容和指针变量 p中的内容不相同,数组中存放的是

26、字符串,而指针变量 p存放的是数组的首地址。 26 【正确答案】 D 【试题解析】 数组的下标从 0开始,数组 a23包括元素 a00, a01,a02, a10, a11, a12,只有选项 D正确, 12为假,所以是 0, !为假也是 0,即引用元素 a00,其他选项的引用均是下标越界。 27 【正确答案】 D 【试题解析】 选项 A调用函数 gets使得 s数组从 s0开始得到输入的字符;选项B使得数组从元素 s1开始得到输入的 5个字符;选项 C使得数组从 s0开始得到输入的字符;而选项 D的 scanf(“ s“, s1)调用错误,应为 scanf(“ s“, &s1)输入项部分应该

27、是一个地址值。 28 【正确答案】 C 【试题解析】 预处理命令是以 “#”开始的语句,每一条预处理命令必须单独占用一行,由于不是 C语言的语句,并且命令行的最后不能以分号表示结束,定义格式为 “#define标识符字符串 ”,预处理命令行是系统对源程序进行编译之前 进行处理的,不是在程序执行的过程中。 29 【正确答案】 A 【试题解析】 定义结构体类型的一般形式 “struct结构体名 成员列表 )”, struct结构体名不能加 “; ”号。 30 【正确答案】 B 【试题解析】 本题考查的是 C语言中输入输出函数的使用, gets和 getchar函数用于从标准输入设备键盘读入字符串和

28、字符; fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。 31 【正确答案】 C 【试题解析】 本题考查对 for循环的使用,首先给两个数组 赋值,第一个 for循环从 0开始循环 12次遍历 s数组的各个元素,数组将 s中的元素值作为 c数组中的下标,然后自加,使相应的值自加,当 i=0, cs0+为 c1+,其值变为1,当执行 i=1, 2 , 11后, c1、 c2、 c3、 c4分别为 4、 3、 3、 2,故选项C正确。 32 【正确答案】 C 【试题解析】 本题定义一个一维数组并赋初值,接着调用 fun(),功能是使数组中的元素逆序,当调用 fun(a

29、, 0, 3),将实参传递给形参实现数组 a中 a0至 a3这 4个元素逆序;同 理调用 fun(a, 4, 9)是将上步排列好的 a数组中 a4至 a9这个 6个元素逆序;调用 fun(a, 0, 9)是将数组中 a0至 a9这 10个元素再逆序,再用 printf()函数输出结果为 5678901234,故选项 C正确。 33 【正确答案】 A 【试题解析】 在 main函数中,定义了一个指向字符串的指针数组,并赋初值,然后调用 fun函数,其功能是比较数组中元素的长度,按长度从小到大排序,所以执行 fun(ss, 5)函数后 *ss=“xy“, “bcc“, “bbcc“, “aaaac

30、c“,所 以调用printf函数输出 ss0, ss4的值分别为 xy, aaaacc。 34 【正确答案】 C 【试题解析】 本题考查了函数的调用,在 f函数中将实参传给 x,判断 if语句为假,接着执行 y=3*3-f(1),再执行 f(1)而 f(1)满足 if条件语句,所以 f(1)的值为 3,那么代入 y=3*3-f(1)=9-3=6,故选项 C正确。 35 【正确答案】 C 【试题解析】 在程序的主函数中 main定义了一个指向字符串的指针和一个字符数组,然后调用 fun(s, t),在 fun()中第一个 while语句判断 *a中的值为 “*”时继续扫描,如果不是 “*”终止,

31、第二个 while循环,将 *a中从 “a”开始的后续所有字符都赋予 *b,也就是 t80中的内容为 “a*b*”,所以此时的运行结果为选项 C。 36 【正确答案】 A 【试题解析】 本题考查在结构体中函数的调用,主函数调用 f(c)后,实参传向形参,但程序中没有返回语句,故形参不能将值传回实参,实参之间值的传递具有不可逆性,所以 printf输出的还是 c中实参的值。 37 【正确答案】 B 【试题解析】 本题考查文件的读写和相关操作 , fp=fopen(“d1 dat“, “w“)以写的方式为输出建立新文本文件,调用 printf输出 “123“, fp=open(“d1 dat“,“

32、r“)以只读的方式打开文本文件,不能对文件内容进行操作,故运行结果为选项B。 38 【正确答案】 A 【试题解析】 如果按题要求,高 4位取反,低 4位不变,则 a为 10101101,在选项中操作的结果,选项 A中 a*b=10101101,选项 B中 a b=1111101,选项 C中 a&b=01010000,选项 D中 a4=11010000,故选项 A正确。 39 【正确答案】 A 【试题解析】 动态变量 (auto)存储在内在中的动态存储区,只在程序运行中,系统才临时给变量分配内存单元;全局变量 (extern)一经定义,系统为其分配固定的内存单元;静态变量 (static),编译

33、系统为其分配固定的存储空间;寄存器变量(register)不保存在内存上,而是直接存储在 CPU的寄存器中。 40 【正确答案】 B 【试题解析】 定义语句 int(*f)(int)中 f是指向函数的指针变量,该函数中也只有一个 int型的形参。 二、基本操作题 41 【正确 答案】 (1)应改为 “TC obj1(1); ”。 (2)应改为 “obj1 SetNumber(10); ”。 (3)应改为 “obi2 SetNumber(100); ”。 【试题解析】 本题第 1处的 “TC obj1; ”语句是声明 TC类的对象 obj1,根据 TC类构造函数的定义 TC(int i),存在整

34、型参数,并且题目要求第一个输出结果为 1,所以补全参数 1,即第 1处的 “TC objl(1); ”。 第 2处的 obj1 number=10; ”应该是调用成员函数 SetNumber赋值。在 C+中成员函数的使用形式应该是:对象名。成员函数,所以修改为“obj1 SetNumber(10); ”。类是对象的抽象,而对象是类的具体实例。 第 3处 “TC.SetNumber(100); ”语句中的 TC为类,并不是对象,这里应该使用定义的对象,即 obj2,所以将语句修改为 “obj2 SetNumber(100): ”。 三、简单应用题 42 【正确答案】 int i, j; for(

35、i=j=0; jn&jm; ) *c+=ai(bj?ai+: bj+; 比较两个数组中元素大小 while(in)*c+=ai+; while(j(m)*c+=bj+; 【试题解析】 本题都指向数组的第一个元素。利用 for循环对要合并的两个数组中的元素进行比较,直到两个数组结束。取比较结果小的元素,并将指向这个数组的位置向后移动一位。 四、综合应用题 43 【正确答案】 (1)应添加 “People(char*sUserName, int nOld)”。 (2)应添加 “m_UserNamei=0; ”。 (3)应添加 “friend void fun(char*s, People&pers

36、on1, People&person2); ”。 (4)将 “if()”补充完整为 “if(person1 m_Old)person2 m_Old)”。 【试题解析】 本题第 1处要求 “完成类的构造函数 ”。根据 “class People”语句知道People为类,所以类 People的构造函数名为 People,根据第 1处的大括弧中的语句知道函数中的参数为数组 sUserName存放姓名,整型 nOld存放年龄,所以补充构造 函数定义为 “People(char*sUserName, int nOld)”。 第 2处要求 “完成构造函数对姓名的赋值 ”。第 2处补全姓名赋值,即“m_U

37、serNamei=0; ”。 第 3处要求 “定义类的友元函数 fun”。在 C+中,如果在本类以外的其他地方定义了一个函数,在类体中是用 friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中的 fun函数定义为trvoidfun(char*s, People&personl, People&person2)”,所 以声明 fun()为类People的友元函数,即这里补全 “friend void fun(char*s, People&personl,People&person2); ”。 第 4处要求 “补充函数 fun的年龄比较 ”。类 People中年龄的变量为 m_Old,根据 C+中类变量的调用格式补充第 4处 if语句中的条件判断语句,即“if(personl m_Old)Derson2 m_Old)”。

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