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

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

1、国家二级( C语言)笔试模拟试卷 180及答案与解析 1 下列关于栈和队列的描述中,正确的是 ( )。 ( A)栈是先进先出 ( B)队列是先进后出 ( C)队列允许在队头删除元素 ( D)栈在栈顶删除元素 2 已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是 ( )。 ( A) ABCDE ( B) ECABD ( C) EACDB ( D) CDEAB 3 在数据流图中,带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)数据流 ( C)模块调用 ( D)事件驱动 4 结构化程序设计的 3种结构是 ( )。 ( A)顺序结构,分支结构,跳转结构 (

2、 B)顺序结构,选择结构,循环结构 ( C)分支结构,选择结构,循环结构 ( D)分支结构,跳转结构,循环结构 5 下列方法中,不属于软件调试方法的是 ( )。 ( A)回溯法 ( B)强行排错法 ( C)集成测试法 ( D)原因排除法 6 下列选项中,不属于模块间耦合的是 ( )。 ( A)内容耦合 ( B)异构耦合 ( C)控制耦合 ( D)数据耦合 7 下列特征中不是面向对象方法的 主要特征的是 ( )。 ( A)多态性 ( B)标识惟一性 ( C)封装性 ( D)耦合性 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段 ( B)概念设计阶段

3、( C)逻辑设计阶段 ( D)物理设计阶段 9 在一棵二叉树上,第 5层的结点数最多是 ( )。 ( A) 8 ( B) 9 ( C) 15 ( D) 16 10 下列有关数据库的描述,正确的是 ( )。 ( A)数据库设计是指设计数据库管理系统 ( B)数据库技术的根本目标是要解决数据 共享的问题 ( C)数据库是一个独立的系统,不需要操作系统的支持 ( D)数据库系统中,数据的物理结构必须与逻辑结构一致 11 以下叙述中错误的是 ( )。 ( A) C语言源程序经编译后生成后缀为 .obj的目标程序 ( B) C程序经过编译、连接步骤后才能形成一个真正可执行的二进制机器指令文件 ( C)用

4、 C语言编写的程序称为源程序,它以 ASC 代码形式存放在一个文本文件中 ( D) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 12 下列定义变量的语句中错误的是 ( )。 ( A) int_int; ( B) double int_; ( C) char for; ( D) float US 13 以下叙述中错误的是 ( )。 ( A) C语句必须以分号结束 ( B)复合语句在语法上被看做一条语句 ( C)空语句出现在任何位置都不会影响程序运行 ( D)赋值表达式末尾加分号就构成赋值语句 14 以下能正确定义且赋初值的语句是 ( )。 ( A) int n1=n2=

5、10; ( B) char c=32; ( C) float f=f+1.1; ( D) double x=12.300.5; 15 设有条件表达式: (EXP)i+:j-,则以下表达式中与 (EXP)完全等价的是 ( )。 ( A) (EXP=0) ( B) (EXP!=0) ( C) (EXP=1) ( D) (EXP!=1) 16 若有定义: float x=1.5; int a=1,b=3,c=2;则正确的 switch语句是 ( )。 ( A) switch(x) ( B) switch(int)x); case 1.0:printf(“*n“); case 1:printf(“*n

6、“); case 2.0:printf(“*n“); case 2:printf(“*n“); ( C) switch(a+B) ( D) switch(a+B)case 1;printf(“*n“); case 1:printf(“*n“); case 2+1:printf(“*n“); case c:printf(“*n“);) 17 有以下程序: main() int a,b,d=25; a=d/10%9;b=a (-1); printf(“%d,%dn“,a,B); 程序运行后的输出结果是 ( )。 ( A) 6,1 ( B) 2,1 ( C) 6,0 ( D) 2,0 18 有以下程

7、序: #include stdio.h main() int i,j; for(i=3;i =1;i-) for(j=1;j =2;j+)printf(“%d“, i+j); printf(“n“); 程序运行的结果是( )。 ( A) 2 3 4 ( B) 4 3 2 ( C) 2 3 ( D) 4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3 19 有以下程序: #include stdio.h void fun(char *a,char*B)while(*a=*)a+; while(*b=*A)b+;a+; main() char*s=“*a*b*“,t80; fun(s,

8、t);puts(t); 程序的运行结果是 ( )。 ( A) *a*b ( B) a*b ( C) a*b* ( D) ab 20 有以下程序: main() int y=10; while(y-); printf(“y=%dn“, y); 程序执行后的输出结果是 ( )。 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 21 要求通过 while循环不断读入字符,当读 入字母 N时结束循环。若变量已正确定义,以下正确的程序段是 ( )。 ( A) while(ch=getchar()!=N)printf(“%c“,ch); ( B) while(ch

9、=getchar()!=N)printf(“%c“,ch); ( C) while(ch=getchar()=N)printf(“%c“,ch); ( D) while(ch=getchar()=N)printf(“%c“,ch): 22 有以下程序: #include stdio.h #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(strlen(si)strlen(sj)t=si; si=sj;sj=t; main() Char*ss=“bcc“,“

10、bbcc“,“xy“,“aaaacc“,“aabcc“; fun(ss,5);printf(“%s,%sn“,ss0,ss4); 程序的运行结果是 ( )。 ( A) xy,aaaacc ( B) aaaacc,xy ( C) bcc,aabcc ( D) aabcc,bcc 23 以下叙述中错误的是 ( )。 ( A)改变函数形参的值,不会改变对应实参的值 ( B)函数可以返回地址值 ( C)可以给指针变量赋一个整数作为地址值 ( D)当在函数的开头包括头文件 stdio.h时,可以给指针变量赋 NULL 24 有以下程序: #include stdio.h main() int s12=1

11、,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(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 25 有以下程序: void change(int k)k0=k5; ) main() int x10=1,2,3,4,5,6,7,8,9,10,n=0; while(n =4)(change( xn); n+; for(n=0;n 5;n+)printf(“%d“,xn

12、); printf(“n“); 程序运行后的输出结果是( )。 ( A) 6 7 8 9 10 ( B) 1 3 5 7 9 ( C) 1 2 3 4 5 ( D) 6 2 3 4 5 26 有以下程序: main() int a33,*P,i; p= a00; for(i=0;i9;i+)pi=i; for(i=0;i 3;i+)printf(“%d“,a1i); 程序运行后的输出结果是 ( )。 ( A) 0 1 2 ( B) 1 2 3 ( C) 2 3 4 ( D) 3 4 5 27 有以下程序: main() char*p=“3697“,“2584“; int i,j;long nu

13、m=0; for(i=0;i 2;i+) j=0; while(pij!=0) if(pij-0)%2)num=10*num+pij-0; j+=2; printf(“%dn“,num); 程序执行后的输出结果是 ( )。 ( A) 35 ( B) 37 ( C) 39 ( D) 3975 28 有以下程序: #include string.h void f(char p10,int n) char t10;int i,j; for(i=0;i n-1;i+) for(j=i+1;j n;j+) if(strcmp(pi,pj) 0) strcpy(t,pi); strcpy(pi,pj);

14、strcpy(pj,t); main() char p510=“abc“,“aabdfg“,“abbd“,“dedbe“,“cd“; f(p, 5); printf(“%dn“,strlen(p0); 程序运行后的输出结果是 ( )。 ( A) 2 ( B) 4 ( C) 6 ( D) 3 29 有以下程序: void swap(char*x,char*y) cbar t; t=*x; *x=*y; *y=t; main() char*s1=“abc“,*s2=“123“; swap(s1,s2);printf(“%s,%sn“,s1,s2); 程序执行后的输出结果是 ( )。 ( A) 12

15、3,abc ( B) abc,123 ( C) 1bc,a23 ( D) 321,cba 30 以下能正确定义字符串的语句是 ( )。 ( A) char str=064; ( B) char str=“kx43“; ( C) char str=“; ( D) char str=“0“; 31 设有定义语句 int(*f)(int);,则以下叙述正确的是 ( )。 ( A) f是基类型为 int的指针变量 ( B) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( C) f是指向 int类型一维数组的指针变量 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 32

16、有以下程序: #include string.h main(int argc,char*argv) int i=1,n=0; while(i argC)n=n+strlen(argvi); i+ printf(“%dn“,n); 该程序生成的可执行文件名为: proc.exe, 若在运行时输入命令行: proc 123 45 67 则该程序的输出结果是 ( )。 ( A) 3 ( B) 5 ( C) 7 ( D) 11 33 有以下程序: #include stdio.h #define N 5 #define M N+1 #define f(x)(x*M) main() int i1,i2;

17、 i1=f(2); i2=f(1+1); printf(“%d%d“,i1,i2); 程序的运行结果 是 ( )。 ( A) 12 12 ( B) 11 7 ( C) 11 11 ( D) 12 7 34 以下叙述中错误的是 ( )。 ( A)可以通过 typedef增加新的类型 ( B)可以用 typedef将已存在的类型用一个新的名字来代表 ( C)用 typedef定义新的类型名后,原有类型名仍有效 ( D)用 typedef可以为各种类型起别名,但不能为变量起别名 35 有以下程序: #include stdio.h struct tt int x; struct tt*y;*p; s

18、truct tt a4=20,a+1,15,a+2,30,a+3,17,a main() int i; p=a; for(i=1;i=2;i+)printf(“%d“,p- x); p=P- y; 程序的运行结果是 ( )。 ( A) 20,30, ( B) 30,17 ( C) 15,30 ( D) 20,15 36 有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n%2)static int a=4;t+=a+; elsestatic int a=5;t+=a+; return t+a+; main() int s=a,i;

19、 for(i=0;i 3;i+)s+=f(i); printf(“%dn“,s); 程序 运行后的输出结果是 ( )。 ( A) 26 ( B) 28 ( C) 29 ( D) 24 37 变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反,低 4位不变,所要执行的运算是 ( )。 ( A) ab ( B) a|b ( C) a b ( D) a 4 38 有以下程序: #include stdio.h main() FILE*fp;int a10=1,2,3,i,n; fp=fopen(“d1.dat“,

20、“w“); for(i=0;i 3;i+)fprintf(fp,“%d“,ai); fprintf(fp,“n“); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d“, n); fclose(fp); printf(“%dn“,n); 程序的运行结果是 ( )。 ( A) 12300 ( B) 123 ( C) 1 ( D) 321 39 以下有关宏替换的叙 述不正确的是 ( )。 ( A)使用宏定义可以嵌套 ( B)宏定义语句不进行语法检查 ( C)双引号中出现的宏名不替换 ( D)宏名必须用大写字母表示 国家二级( C语言)笔试模拟试卷

21、180答案与解析 1 【正确答案】 D 【试题解析】 栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端勾栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。 2 【正确答案】 C 3 【正确答案】 B 【试题解析】 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。 4 【正确答案】 B 【试题解析】 程序设计语言仅仅使用顺序、选择和重复 (循环 )三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,

22、按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。 5 【正确答案】 C 【试题解析】 软件调试主要采用以以三种方法: 强行排错法:作为传统的调 试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。 回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现 “症状 ”的位置。 原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。 6 【正确答案】 B 【试题解析】 耦合可以分为下列几种,它们之间的耦合度由高到低排列: 内容耦合 若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。 公共耦

23、合 若组模块都访问同一全局数据结构,则称为公共耦合。 外部耦合 若一组模块 都访问同一全局数据项,则称为外部耦合。 控制耦合 若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。 标记耦合 若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。 7 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性 好。 8 【正确答案】 C 【试题解析

24、】 逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够用某一 DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。它包捅从 E-R图向关系模式转换和逻辑模式规范化及调整、实现。 9 【正确答案】 D 【试题解析】 根据二叉树的性质:二叉树第 i(i1)层上至多有 2i-1个结点。得到第 5层的结点数最多是 16个。 10 【正确答案】 B 【试题解析】 数据库设计的目的实质上是设计出满 足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据

25、;减小数据的冗余,以提高数据的致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。 11 【正确答案】 D 【试题解析】 C语言程序编译时,每条可执行语句将转换为二进制的机器指令,非执行语句如注释语句等不被编译。 12 【正确答案】 D 【试题解析】 不能用做变量名,合法的标识符由字母、数字和下画线组成。 13 【正 确答案】 C 【试题解析】 C程序中所有语句都必须由一个分号 “; ”作为结束符。如果只有一个分号,这个分号也是一条语句,称为 “空语句 ”,程序执行时不产生任何动作。程序设计中有时需要加一个空语句来表示存在一条语句,但随意加分号也会导致逻辑上的错误,影响

26、程序的运行。所以选项 C的说法是错误的。 14 【正确答案】 B 15 【正确答案】 B 【试题解析】 本题考查的重点是条件表达式的用法。条件表达式首先判断“(EXP)”是真值还是假值。而在 C语言中,真值是任意非零值,也可以是负数,而假值是零。因 此,与条件表达式中 “(EXP)”完全等价的是选项 B。 16 【正确答案】 C 17 【正确答案】 B 【试题解析】 本题的考点是关于 C语言的整数运算和逻辑运算。由于 d初值为25, “a=d/10%9 中 d/10”整除结果是 2,再用 9求余结果仍是 2,因此 a的值为 2。而对于 “b=a (-1)”,由于 a值为 2不为 0, -1也不

27、为 0,因此 “a (-1)”结果为真, b值是 1。输出结果应该是 2、 1。正确选项是 B。 18 【正确答案】 D 【试题解析】 本题主要考查 for循环语句的嵌套。外层主循环执 行了 3次,嵌套的循环语句每轮执行 2次,每次输出 i+j的值,推出嵌套循环语句后换行。 19 【正确答案】 C 20 【正确答案】 B 【试题解析】 whik语句一般形式为: While(表达式 )语句;其语句先判断表达式,后执行语句。而表达式 y-先返回 y的当前值,再进行 -1运算。 21 【正确答案】 A 【试题解析】 因为 while是以条件为假时结束循环,因此选项 C、 D不正确。“!=”的优先级比

28、 “=”高,因此 “ch=getchar()!=N”相当于 “ch=(getchar!=N)”, ch并不能得到输入的字符,只能得到 true或者 false值。 22 【正确答案】 A 23 【正确答案】 C 24 【正确答案】 C 【试题解析】 程序中定义了两个数组 s和 c,数组 c中有 5个元素,每个元素的初始值为 0;数组 s中有 12个元素,包含 4个 “1”, 3个 “2”, 3各 “3”, 2个 “4”。第一个 for语句中,用 si作为 c数组的下标,用于统计 si中相同数字的个数,同时将统计的结果放在以该数字为下标的 c数组中。第二个 for语句用于将 c数组中a1 a44

29、个元素输出。 25 【正确答案】 A 【试题解析】 本题主要考查数组元素的地址作为实参,当 n=0时,把 x0的地址传递给被调函数 change(),即把形参 k和实参 x指向同一个存储单元,执行被调函数后 k0=6,即 x0=6;当 n=1时,执行被调函数后 x1=7,以此类推,最后得到 x数组的值为 6, 7, 8, 9, 10。 26 【正确答案】 D 【试题解析】 本题的考点是 C语言的指针。 p指向二维数组 a的首地址,而二维数组是按行存放的。因此 “。 for(i=0; i 9; i+)pi=i; ”的结果是等价于a33=0,1,2,3,4,5,6,7,8,也就是 a33=0,1,

30、2), 3,4,5), 6,7,8。因此a1i(i=0,1,2)的结果是 3、 4、 5。输出结果应该是: 3 4 5。 27 【正确答案】 C 【试题解析】 通过赋值表达式指针数组 *p等价于数组 p24;表达式 “pij-0”可用来表示该字符数组元素的数值,故表达式 “(pij-0) 2”为判断该字符数组元素的数值的奇偶性,表达式 “num=10*num+pij-0”中的数值运算表示直接加该字符数组元素的数值。 28 【正确答案】 C 【试题解析】 本题考核的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符串数组 p并按行赋值,调用 f()

31、函数,将字符串从小到大排序, strcmp()函数的功能是对两个字符串作向右逐个字符比较,直到出现不同的字符或遇到 “0”为止。如果全部字符都相同,则认为相等;若出现不同的字符则以第一个不相同的字符的比较结果为准。由此可知最小的字符串是 “aabdfg”,排序后存放在 p0中,最 后在主函数中输出 p0的长度。 29 【正确答案】 C 【试题解析】 函数 swap()实现的功能为交换字符指针 x和 y首位的数值。 30 【正确答案】 D 【试题解析】 字符串必须以 0为结束符。 31 【正确答案】 B 【试题解析】 int(*f)(int);为指向函数的指针变量的定义方法,其中 f为指向函数的

32、指针变量,第一个 int为函数返回值的类型,第二个 int为函数的形参类型。 32 【正确答案】 C 33 【正确答案】 B 【试题解析】 根据 define的定义,可得 f(2)=2*5+1=11, f(1+1)=1+1*5+17。 34 【正确答案】 A 【试题解析】 typedef用来声明新的类型名来代替已有的类型名, typedef只是对已经存在的类型增加了一个类型名,原有类型名仍有效。 typedef不能用来定义变量。 35 【正确答案】 D 【试题解析】 本题考查的重点是对结构体的运用与理解。在 a4的初始化中,相当于将其生成为一个链表,故打印两次相当于将前两个整数值打印出来因此选

33、项 D是正确的。 36 【正确答案】 C 【试 题解析】 定义 “int a=2; ”中的全局变量 a,起作用的范围是从定义此变量的位置开始到本源文件结束;定义 “static int a=3; ”中的静态局部变量 a的作用范围是其所在的函数 f,并对其只赋一次初值,以后每次调用函数时不再重新赋值,而只保留上次函数调用结束时的值;复合语句 “staticint a=4; t+=a+; ”和 “static int a=5; t+=a+; )”中定义的两个变量 a属于复合语句中定义的变量,作用的范围只在其本身所在的复合语句内,对于本程序来讲,第三行定义的静态局部变量并不会对 第 4、 5 37

34、【正确答案】 A 【试题解析】 1与 1异或结果为 0, 0与 1异或结果为 1,可见要使某位数翻转,只要使其与 1进行异或运算即可。 0与 0进行异或运算结果为 0, 1与 0进行异或运算结果为 1,可见要使某位的数不变,只要使其与 0进行异或运算即可。 38 【正确答案】 B 39 【正确答案】 D 【试题解析】 本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意: 宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查: 为了区别程序中其他的标示符,宏名的定义 通常用大写字母,但不是必须用大写; 双引号中出现的宏名不替换; 使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。

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

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

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