[计算机类试卷]国家二级C语言程序设计机试(选择题)模拟试卷2及答案与解析.doc

上传人:unhappyhay135 文档编号:498923 上传时间:2018-11-30 格式:DOC 页数:24 大小:64.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言程序设计机试(选择题)模拟试卷2及答案与解析.doc_第1页
第1页 / 共24页
[计算机类试卷]国家二级C语言程序设计机试(选择题)模拟试卷2及答案与解析.doc_第2页
第2页 / 共24页
[计算机类试卷]国家二级C语言程序设计机试(选择题)模拟试卷2及答案与解析.doc_第3页
第3页 / 共24页
[计算机类试卷]国家二级C语言程序设计机试(选择题)模拟试卷2及答案与解析.doc_第4页
第4页 / 共24页
[计算机类试卷]国家二级C语言程序设计机试(选择题)模拟试卷2及答案与解析.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、国家二级 C语言程序设计机试(选择题)模拟试卷 2及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度大,则其时间复杂度必定小 ( C)一个算法的时间复杂度太,则其空间复杂度必定小 ( D)算法的时间复杂度与空间复杂度没有直接关系 2 下列叙述中正确的是 ( )。 ( A)循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 ( B)循环队列中的元素个数随队头指针的变化而动态变化 ( C)循环队列中 的元素个数随队尾指针的变化而动态变化 ( D)以上说法都不对 3 一个栈的初始状态为空。现将元素 1

2、, 2, 3, A, B, C依次入栈,然后再依次出栈,则元素出栈的顺序是 ( )。 ( A) 1, 2, 3, A, B, C ( B) C, B, A, 1, 2, 3 ( C) C, B, A, 3, 2, 1 ( D) 1, 2, 3, C, B, A 4 一棵二叉树中共有 80个叶子结点与 70个度为 1的结点,则该二叉树中的总结点数为 ( )。 ( A) 219 ( B) 229 ( C) 230 ( D) 231 5 对长度为 10的线性表进行冒泡排 序,最坏情况下需要比较的次数为 ( )。 ( A) 9 ( B) 10 ( C) 45 ( D) 90 6 下列各项中,对对象概念

3、描述正确的是 ( )。 ( A)对象间的通信靠消息传递 ( B)对象是名字和方法的封装体 ( C)任何对象必须有继承性 ( D)对象的多态性是指一个对象有多个操作 7 下列各项中,不属于软件设计阶段任务的是 ( )。 ( A)软件总体设计 ( B)算法设计 ( C)制订软件并确认测试计划 ( D)数据库设计 8 一般情况下,当对关系 R和 S进行自然连接时,要求 R和 s含有一个或者多个共有的 ( )。 ( A)记录 ( B)行 ( C)属性 ( D)元组 9 下列各项与栈结构有关联的是 ( )。 ( A)数组的定义域使用 ( B)操作系统的进程调度 ( C)函数的递归调用 ( D)选择结构的

4、执行 10 有两个关系 R和 T如下: 则由关系 R得到关系 T的操作是 ( )。 ( A)选择 ( B)交 ( C)投影 ( D)并 11 有以下定义: struct data int i; char c; double d; x; 以下叙述中错误的是 ( )。 ( A) x的内存地址与 x i的内存地址相同 ( B) struct data是一个类型名 ( C)初始化时,可以对 x的所有成员同时赋初值 ( D)成员 i、 c和 d占用的是同一个存储空间 12 以下函数的功能是计算 a的 n次方并作为函数值返回: double fun(double a, int n) int i; doub

5、le s=1 0; for(i=1; i #include main() char str=“Hello Beijing”; printf(“ d, d n”, strlen(str), sizeof(str); 程序的运行结果是 ( )。 ( A) 13, 13 ( B) 13, 14 ( C) 13, 15 ( D) 14, 15 14 若有说明: typedef struct int a; char c; w; 则以下叙述正确的是 ( )。 ( A)编译后系统为 w分配 5个字节 ( B)编译后系统为 w分配 6个字节 ( C)编译后系统为 w分配 58个字节 ( D)编译后系统不为 w

6、分配存储空间 15 以下叙述中错误的是 ( )。 ( A)同一个数组中所有元素的类型相同 ( B)不可以跳过前面的数组元素,给后面的元素赋初值 0 ( C)定义语句: int a10=0;,给 a数组中所有元素赋 初值 0 ( D)若有定义语句: int a4=1, 2, 3, 4, 5;,编译时将忽略多余的初值 16 若有以下定义: struct tt char name10; char sex; aa=“ aaaa”, F, *P=&aa; 则错误的语句是 ( )。 ( A) scanf(“ C”, aa.sex); ( B) aa.sex=getchar(); ( C) printf(“

7、 c n”, (*P) sex); ( D) printf(“ c n”, P一 sex); 17 C语言编译程序的功能是 ( )。 ( A)执行一个 C语言编写的源程序 ( B)把 C源程序翻译成 ASCI 码 ( C)把 C源程序翻译成机器代码 ( D)把 C源程序与系统提供的库函数组合成一个二进制执行文件 18 有以下程序: #include int fun(int n) if(1n return fun(n一 1)+n; else return 0; main() prinff(“ d n”, fun(3); 程序的运行结果是 ( )。 ( A) 4 ( B) 5 ( C) 6 ( D

8、) 7 19 有以下程序: #include main() int sum=0, x=5; d0sum+=x; while(!一一 x); printf(“ d n”, sum); 程序的运行结果是 ( )。 ( A) 0 ( B) 5 ( C) 14 ( D) 15 20 有以下程序: #include #include typedef struct char name9; char sex; float score2; STU; void f(STU*a) strcpy(a一 name, “Zhao”); a一 sex=m; a一 score1=90 0; main() STU c=“Qi

9、an”, f, 95, 92 0, *d=&c; f(d); prinff(“ s, c, 2 Of, 2 of n”, d一 name, c.ex, c.score0, c.score1); 程序的运行结果是 ( )。 ( A) Qian, f, 95, 92 ( B) Zhao, f, 95, 90 ( C) Zhao, m, 95, 90 ( D) Zhao, f, 95, 92 21 关于 C语言程序的下列说法中,正确的是 ( )。 ( A)函数的定义可以嵌套,但函数的调用不可以嵌套 ( B)函数的定义不可以嵌套,但函数的调用可以嵌套 ( C)函数的定义和调用均不可以嵌套 ( D)函数

10、的定义和调用均可以嵌套 22 执行以下程序段后, s的值为 ( )。 int a=1, 2, 3, 4, 5, 6, 7, 8, 9, s=0, k; for(k=0; k #define M 5 #define f(x, y)x*y+M main() int k; k=f(2, 3)*f(2, 3); printf(“ d n”, k); 程序的运行结果是 ( )。 ( A) 22 ( B) 41 ( C) 100 ( D) 121 24 有以下程序: #include main() char ch=Z; ch=(ch一 A+1) 26+A; putchar(ch); prinff(“ n”

11、); 程序的运行结果是 ( )。 ( A) Z ( B) Y ( C) B ( D) A 25 有以下程序: #include main() int i, j, k, a=5, b=6; i=(a=b)?+a:一一 b; j=a+; k=b; printf(“ d, d, d n”, i, j, k); 程序的运行结果是 ( )。 ( A) 7, 6, 5 ( B) 5, 5, 5 ( C) 7, 5, 5 ( D) 5, 6, 5 26 C语言程序中,若函数无返回值,则应该对函数说明的类型是 ( )。 ( A) int ( B) double ( C) char ( D) void 27 有

12、以下程序: #include main() int k, n=0; char e, str=“teach”; for(k=0; strk; k+) c=strk; switch(k) case 1: case j: case 5: putchar(c); printf(“ d”, +n); break; default: putchar(N); printf(“ n”); 程序的运行结果是 ( )。 ( A) Nel NN ( B) e1 a2e3 ( C) NelNc2N ( D) NalNNNN 28 有以下程序: #include void fun(char(*P)6) int 1; f

13、or(i=0; i #define N 4 void fun(int aN, int b) int i; for(i=0; i main() int i, j, x=0; for(i=0; i main() int k=10; printf(“ 4d, 0, x n”, k, k, k); 程序的运行结果是 ( )。 (口代表一个空格。 ) ( A) 10, 12, a ( B)口口 10, 012, a ( C) 010, 12, a ( D)口口 10, 12, a 36 若有定义: int a=1, b=2, c=3;,则执行表达式 (a=b+c)(+b)后, a, b, c的值依次为

14、( )。 ( A) 1, 2, 3 ( B) 5, 3, 2 ( C) 5, 2, 3 ( D) 5, 3, 3 37 设有: char s5, c;,则调用函数 scanf能正确给 S和 c读入数据的是 ( )。 ( A) scanf(“ s c”, s, c); ( B) scanf(“ d c”, &s, &c); ( C) scanf(“ d c”, s, &c); ( D) scanf(“ s c”, s, &c); 38 若变量已正确定义并赋值,则错误的赋值语句是 ( )。 ( A) a+a+1: ( B) a=sizeof(double); ( C) a=d c; ( D) a+

15、1=a: 39 有以下程序: #include void main() int m=1, n=2, *P=&m, *q=&n, *r; r=P; p=q; q=r; printf(“ d, d, d, d n”, m, n, *P, *q); 程序运行后的输出结果是 ( )。 ( A) 1, 2, 1, 2 ( B) 1, 2, 2, 1 ( C) 2, 1, 2, 1 ( D) 2, 1, 1, 2 40 若有以下程序: #include int f(int m) static int n=0; int a=2: n+; a+; return n+m+a; main() int k; for

16、(k=0; k4; k+) printf(“ d, ”, f(k); 则程序的输出结果是 ( )。 ( A) 3, 5, 7, 9, ( B) 4, 7, 10, 13, ( C) 4, 5, 6, 7, ( D) 4, 6, 8, 10, 国家二级 C语言程序设计机试(选择题)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为 D。 2 【正确答案】 A 【试题解析】 在循环队列中,用队尾指针 rear指向队列中的队尾元素,用排头指针 fr

17、ont指向排头元素的前一个位置。因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数随队头指针和队尾指针的变化而变化。 A选项正确。 3 【正确答案】 C 【试题解析】 栈的修改是按 “后进先出 ”的原则进行的,所以顺序应与入栈顺序相反,故 C选项正确。 4 【正确答案】 B 【试题解析】 二叉树中,度为 0的结点数等于度为 2的结点数加 1,即 n2=n01,叶子结点即为 0,则 n2=79,总结点数为 n0+n1+n2=80+70+79=229。故 B选项正确。 5 【正确答案】 C 【试题解析】 冒泡法是在扫

18、描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,故 C选项正确。 6 【正确答案】 A 【试题解析】 对象之间进行通信的构造叫作消息,选项 A正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,选项 B错误。对象不一定必须有继承性,选项 C错 误。多态性是指同一个操作可以是不同对象的行为,选项 D错误。 7 【正确答案】 C 【试题解析】 从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以 A、 B、 D正确, C为软件测试阶段的任务。

19、 8 【正确答案】 C 【试题解析】 自然连接是一种特殊的等值连接,它满足下面的条件: 两关系间有公共域; 通过公共域的等值进行连接,故 c选项正确。 9 【正确答案】 C 【试题解析】 递归调用的本质就是函数调用函数本身,直到满足特定条件时才停止,然后从最后被递归调用处 返回。递归函数是通过栈来实现的,所以调用原则和栈的实现相一致。 10 【正确答案】 C 【试题解析】 关系 T是由关系 R的第 3、 4行的元组组成的,很显然这是对关系R进行选择运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。选择是从表中选出满足给定条件的元组组成新表。故 C选项正确。 11 【正确答

20、案】 D 【试题解析】 i、 c、 d是结构体变量 x中的三个不同的成员,占用不同的存储空间。 12 【正确答案】 B 【试题解析】 s为 a的 (i一 1)次方的结果,所以令 s=s* a即可得到 a的 i次方。 13 【正确答案】 B 【试题解析】 strlen返回字符串的长度,结果为 13; sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个 0,所以结果为 13+1=14。 14 【正确答案】 D 【试题解析】 w是一个自定义类型,而不是变量,故编译后系统不为 w分配存储空间。当使用 w定义变量时才会为其定义的变量分配存储空间。 15 【正确答案】 D 【试题解析】 数

21、组初始化时,若所赋初值多于所定义数组的元素个数时,编译器将会报错。 16 【正确答案】 A 【试题解析】 SeX是一个 char类型变量,不是地址, A项应为 scanf(“ c”,aa.sex);。 17 【正确答案】 C 【试题解析】 编译程序的功能是将 “高级语言 ”翻译为 “机器语言 ”。每条 c语言语句,经过编译最终都将转换成二进制的机器指令。 18 【正确答案】 C 【试题解析】 fun函数是一个递归函数, n=3,返回 f(31)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。 19 【正确答案】 B 【试题解析】 先执行 d0中的表达式 sum+=x,则

22、 sum=sum+x=0+5=5,再执行while中的表达式,结果为 0,退出循环,所以运行结果是 5。 20 【正确答案】 C 【试题解析】 f函数调用时,结构体数组名作为实参传给了形参指针,使结构体指针 a指向了数组 c的首地址。因此, f持有了主函数中数组 c的指针,可以对数组 c中的元素赋值,故返回主函数之后,数组 c中的成员值已被更新。 21 【正确答案】 B 【试题解析】 函数定义都是在函数外部进行的,而函数调用是在函数内部发生的,所以函数的定义不可以嵌套, 但函数的调用可以嵌套。 22 【正确答案】 B 【试题解析】 数组元素为: a0=1, a1=2a8=9 。 k=0时,s=

23、s+*(a+k)=0+1=1; k=2时, s=1+*(a+2)=l=3=4; k=4时, s=4+5=9; k=6时,s=9+7=16。 23 【正确答案】 B 【试题解析】 宏定义中的函数在调用时只做简单的替换功能。所以k=2*3+5*2*3+5=41。 24 【正确答案】 D 【试题解析】 z的 ASCII码是 90, A的 AScII码是 65,所以 ch=(ch一 A+1)26+A=26 26+65=65, 65对应的字符即 A。 25 【正确答案】 B 【试题解析】 i=(a=b)?+a:一一 b;中先执行 a: b,为否,根据三元运算符语法规则,执行一一 b,此时 b为 5,赋给

24、 i, i 5; j=a+,将 a: 5先赋给 j,再进行 a+, k=b=5,故最后输出的是 5, 5, 5。 26 【正确答案】 D 【试题解析】 int表示返回值是整型, double表示返回值是双精度型, char表示返回值是字符型, voicl表示无返回值。 27 【正确答案】 C 【试题解析】 k=0时,选择 default分支,输出 N; k=1时, c=str1=e,选择case 1分支,因为没有遇到 break语句,故继续执行 case3、 case5分支,输出 c和+n,即输出 e和 1,依次往下执行,最终输出 NelNc2N。 28 【正确答案】 B 【试题解析】 函数

25、fun的功能是输出 sii,所以结果会输出 s00、 s11、s22,即 Ab31。 29 【正确答案】 D 【试题解析】 x 100的个位数是 x的百位数上的数字,所以 再进行 10运算即可得到该数字。 30 【正确答案】 C 【试题解析】 调用 fun函数, yi=xiN一 1一 i, N=4, x是 4行 4列的二维数组。 i=0时, y0=x041=x03=4; i-1时, y1=x1411=x12=7; i=2时, y2=x2412=x21=10; i-3时, y3=x30=13。 31 【正确答案】 C 【试题解析】 第一次循环: i=0,执行 x+后 x=1,执行内层循环 j=0

26、,由于 j2!=0时才执行 x+,即只有 j取 1和 3时,执行 x+,此时 x=1+1+1=3,跳出内层循环,执行下一条语句 x+, x=4,第二次循环: x=1时,重复上述循环,共执行两次循环,故 x最终结果是 4*2=8。 32 【正确答案】 D 【试题解析】 fun函数的形式参数应为一个数组,而 b11是一个整型元素,参数类型不一致,且 b11已经溢出,所以 D选项错误。 33 【正确答案】 C 【试题解析】 0开头表示的是八进制整型常量,但八进制只能用 0一 7的数字表示。 34 【正确答案】 C 【试题解析】 c选项是一个赋值表达式。 A、 B两项是字符串常量, D选项是字符型常量

27、。 35 【正确答案】 D 【试题解析】 4d表示先输出占 4个字符的十进制, 10已占 2个字符,故先输出 2个空格,然后输出 10; 0表示输出八进制,所以输出 10的八进制为 12;x表示输出十六进制,即 a。 36 【正确答案】 C 【试题解析】 I I表示或运算,当第一个表达式为真时,第二个表达式就不会被执行。根据优先级规则,两边都是括号,所以先计算 (a=b+c),将 b+c的值赋值给a,则 a=5,而右边的 括争不会被执行,所以 b=2, c=3。 37 【正确答案】 D 【试题解析】 s5中放的是字符串,故输入的类型应该是 s; c中放的是字符,故输入的是 c。要正确读入数据必

28、须要使用 s和 c的地址,而 s代表地就是字符数组的首地址。 38 【正确答案】 D 【试题解析】 赋值号 “=”的左边必须是一个变量名。 39 【正确答案】 B 【试题解析】 本题定义了两个整型变量,然后用两个指针分别指向这两个整型变量,接着对指针进行交换,那么原来指向第一个整数的指针将指向第二个整数,原来指向第二 个整数的指针将指向第一个整数。 40 【正确答案】 D 【试题解析】 本题考查静态局部变量以及自增运算符,静态局部变量在函数调用结束后,并不释放,仍然保留它的值。本题中, k为 0时, return n+m+a之前, n为 1, a为局部变量是 3, m为 0,所以第一个返回值为 4。 k为 1时,在函数返回值之前,静态局部变量为 2,局部变量 a仍然为 3, m为 1,所以结果是 6。以此类推,答案为 D。

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

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

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