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

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

1、国家二级( C语言)机试模拟试卷 155及答案与解析 一、选择题 1 设循环队列的存储空间为 Q(1: 35),初始状态为 front=rear=35。现经过系列入队与退队运算后, front=15, rear=15,则循环队列中的元素个数为 ( )。 ( A) 20 ( B) 0或 35 ( C) 15 ( D) 16 2 下列关于栈的叙述中,正确的是 ( )。 ( A)栈底元素一定是最后入栈的元素 ( B)栈操作遵循 “先进后出 ”的原则 ( C)栈顶元素一定是最先入栈的元素 ( D)以上三种说法都不对 3 下列链表中,其逻辑结构属于非线性结构的是 ( )。 ( A)双向链表 ( B)带链

2、的栈 ( C)二叉链表 ( D)循环链表 4 在关系数据库中,用来表示实体间联系的是 ( )。 ( A)网状结构 ( B)树状结构 ( C)属性 ( D)二维表 5 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可有多名职员。则实体部门和职员间的联系是 ( )。 ( A) 1: m联系 ( B) m: n联系 ( C) 1: 1联系 ( D) m: 1联系 6 C语言中最基本的数据类型包括 ( )。 ( A)整型、实型、逻辑型 ( B)整型、字符型、数组 ( C)整型、实型、字符型 ( D)整型、实型、结构体 7 数据字典 (DD)所定义的对象都包含于 ( )。 ( A)软件结

3、构图 ( B)方框图 ( C)数据流图 (DFD图 ) ( D)程序流程图 8 软件需求规格说明书的作用不包括 ( )。 ( A)软件设计的依据 ( B)软件可行性研究的依据 ( C)软件验收的依据 ( D)用户与开发人员对软件要做什么的共同理解 9 下列各项中属于黑盒测试方法的是 ( )。 ( A)边界值分析 ( B)路径覆盖 ( C)语句覆盖 ( D)逻辑覆盖 10 下列各项中不属于软件设计阶段任务的是 ( )。 ( A)制订软件确认测试计划 ( B)数据库设计 ( C)软件总体设计 ( D)算法设计 11 以下叙述中正确的是 ( )。 ( A)在 C语言程序中, main函数必须放在其他

4、函数的最前面 ( B)每个后缀为 C的 C语言源程序都可以单独进行编译 ( C)在 C语言程序中,只有 main函数才可单独进行编译 ( D)每个后缀为 C的 C语言源程序都应该包含一个 main函数 12 C语言中的 标识符分为关键字、预定义标识符和用户标识符,以下叙述中正确的是 ( )。 ( A)预定义标识符 (如库函数中的函数名 )可用作用户标识符,但失去原有含义 ( B)用户标识符可以由字母和数字任意顺序组成 ( C)在标识符中大写字母和小写字母被认为是相同的字符 ( D)关键字可用作用户标识符,但失去原有含义 13 以下选项中表示一个合法的常量的是 (说明:符号 表示空格 )( )。

5、 ( A) 999 ( B) 0Xab ( C) 123E0 2 ( D) 2 7e 14 C语言主要是借助以下哪个功能来实现 程序模块化 ?( ) ( A)定义函数 ( B)定义常量和外部变量 ( C)三种基本结构语句 ( D)丰富的数据类型 15 以下叙述中错误的是 ( )。 ( A)非零的数值型常量有正值和负值的区分 ( B)常量是在程序运行过程中值不能被改变的量 ( C)定义符号常量必须用类型名来设定常量的类型 ( D)用符号名表示的常量叫符号常量 16 若有定义和语句: int a, b; scanf(“ d, d“, &a, &b); 以下选项中的输入数据,不能把值 3赋给变量 a

6、、把值 5赋给变量 b的是 ( )。 ( A) 3, 5, ( B) 3, 5, 4 ( C) 3 5 ( D) 3 5 17 C语言中 char类型数据占字节数为 ( )。 ( A) 3 ( B) 4 ( C) 1 ( D) 2 18 下列关系表达式中,结果为 “假 ”的是 ( )。 ( A) (3+4) 6 ( B) (31=4) 2 ( C) 3 =43 ( D) (3 4)=1 19 若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是 ( )。 ( A) switch(a+9) case c1: y=a-b; case c2: y=a+b; ( B)

7、switch a*b case 10: x=a+b; default: y=a-b; ( C) switch(a+b) case1: case3: y=a+b; break; case0: case4: y=a-b; ( D) switch(a*a+b*b) default: break; case3: y=a+b; break; cage2: y=a-b; break; 20 有以下程序: #include stdio h main() int a=-2, b=0; while(a+&+b); printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( )。 ( A) 1,

8、 3 ( B) 0, 2 ( C) 0, 3 ( D) 1, 2 21 有以下程序: #include stdio h main() int a=2, 4, 6, 8, *p=a, i; for(i=0; i 4; i+) ai=*p+; printf(“ d n“, a2); 程序运行后的输出结果是 ( )。 ( A) 2 ( B) 8 ( C) 4 ( D) 6 22 下列叙述中正确的是 ( )。 ( A)可以用关系运算符比较字符串的大小 ( B)空字符串不占用内存,其内存空间大小是 0 ( C)两个连续的单引号是合法的字符常量 ( D)两个连续的双引号是合法的字符串常量 23 有以下程序

9、: #include stdio h main() int aa33=2, 4, 6, i, *p=&aa00; for(i=0; i 2; i+) if(i=0) allii+1=*p+1; else+p; printf(“ d“, p*); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 2 6 ( B) 2 3 ( C) 4 3 ( D) 4 6 24 有以下程序: #include stdio h int f(int x) return x*x+1; void main() int a, b=0; for(a=0; a 3; a+) b=b+f(a); putc

10、har(A+b); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) ABE ( B) BDI ( C) BCF ( D) BCD 25 以下选项中,能正确进行字符串赋值的是 ( )。 ( A) char *s=“ABCDE“: ( B) char s5=A, B, C, D, E; ( C) char s45=“ABCDE“; ( D) char *s; get(s); 26 有以下程序: #include stdio h int fun(int x) int p; if(x=0|x=1) return3; P=x-fun(x-2); return(p); main()

11、 printf(“ d n“, fun(9); 程序运行后的输出结果是 ( )。 ( A) 4 ( B) 5 ( C) 9 ( D) 7 27 有以下程序: #include stdio h main() int a=10, 20, 30, 40, *p=a, i; for(i=0; i =3; i+) ai=*p; p+; printf(“ d n“, a2); 程序运行后的输出结果是 ( )。 ( A) 30 ( B) 40 ( C) 10 ( D) 20 28 有以下程序: #include stdio h #define N3 void fun(int aN, int b) int i

12、, j; for(i=0; i =2; i+) int max=ai0; for(j=i; j =2; j+) if(max aij) max=aij; bi=max; main() int xNN=1, 2, 3, 4, 5, 6, 7, 8, 9, yN, i; fun(x, y); for(i=0; i =2; i+) pr ( A) 2, 4, 8, ( B) 3, 6, 9, ( C) 3, 5, 7, ( D) 1, 3, 5, 29 有以下程序: #include stdio h int fun(char*s) chaur*p=s; while(*p+!= 0); return(

13、p-s); mmn() char*r=“01234“; printf(“ d n“, fun(r); 程序的运行结果是 ( )。 ( A) 6 ( B) 5 ( C) 4 ( D) 3 30 以下选项中,合法的是 ( )。 ( A) char str3=d, e, b, u, g, 0; ( B) char str4; str4=“hello world“; ( C) char name10; name=china“; ( D) char std5=“pass“, str26; str2=std; 31 有以下程序段: int fun(char*s) char*p; p=s; if(*s=0)

14、return0; while(*+p); return(p-s); 该段程序是用来 ( )。 ( A)计算字符串所占字节数 ( B)实现字符串的赋值 ( C)计算字符串的长度 ( D)将字符串逆序存放 32 有以下程序: #include stdio h void main() char a510=“one“, “two“, “three“, “four“, “five“; int i, j; char t; for(i=0; i 5; i+) for(j=i+1; j 4; j+) if(ai0 aj0) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果

15、是 ( )。 ( A) two owo ( B) fix owo ( C) two fov ( D) owo otf 33 有以下程序: #include stdio h int a=1, b=2; void fun1(int a, int b) printf(“ d d“, a, b); void fun2() a=3; b=4; void main() fun1(5, 6); fun2(); printf(“ d d n“, a, b); 程序运行后的输出结果是 ( )。 ( A) 1256 ( B) 5634 ( C) 5612 ( D) 3456 34 有以下程序: #include

16、stdio h void func(int n) static int num=1; num=num+n; printf(“ d“, num); main() func(3); func(4); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 4 8 ( B) 3 4 ( C) 3 5 ( D) 4 5 35 有以下程 序: #include stdio h #include malloc h void fun(int*p1, int*p2, int*s) s=(int*)malloc(sizeof(int); *s=*p1+*p2: free(s); void mai

17、n() int a=1, b=40, *q=&a; fun(&a, &b, q); printf(“ d n“, *q); 程序运行后的输出结果是 ( )。 ( A) 42 ( B) 0 ( C) 1 ( D) 41 36 有以下程序: #include stdio h struct STU char name9; char sex; int score2; ; void f(struct STU a) struct STU b=“Zhao“, m, 85, 90; a1=b; main() struct STU c2=“Qian“, f, 915, 92, “Sun“, m, 98, 99;

18、 f(c); printf(“ s, c, d, d, “, c0 name, c0 s ( A) Zhao, m, 85, 90, Sun, m, 98, 99 ( B) Zhao, m, 85, 90, Qian, f, 95, 92 ( C) Qian, f, 95, 92, Sun, m, 98, 99 ( D) Qian, f, 95, 92, Zhao, m, 85, 90 37 以下针对全局变量的叙述中错误的是 ( )。 ( A)用 extern说明符可以限制全局变量的作用域 ( B)全局变量是在函数外部任意位置上定义的变量 ( C)全局变量的作用域是从定义位置开始至源文件结束

19、( D)全局变量的生存期贯穿于整个程序的运行期间 38 以下关于宏的叙述中错误的是 ( )。 ( A)宏名必须用大写字母构成 ( B)宏替换不具有计算功能 ( C)宏替换不具有计算功能 ( D)宏替换不占用运行时间 39 若有定义语句 int b=2;,则表达式 (b 2) (3b)的值是 ( )。 ( A) 4 ( B) 8 ( C) 0 ( D) 2 40 有以下程序: #include stdio h main() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w+“); for(i=0; i 6; i+) fprint

20、f(fp, “ d n“, ai); rewind(fp); for(i=0; i 6; i+) fscanf(fp, “ d“, &a5-i); fclose(fp); for(i=0; i 6; i+) printf(“ d, “, ai); printf(“ n“) ( A) 4, 5, 6, 1, 2, 3, ( B) 1, 2, 3, 3, 2, 1, ( C) 1, 2, 3, 4, 5, 6, ( D) 6, 5, 4, 3, 2, 1, 二、程序填空题 41 下列给定程序中,函数 fun的功能是:把形参 a所指数组中的偶 数按原顺序依次存放到 a0、 a1、 a2 中,把奇数从

21、数组中删除,偶数的个数通过函数值返回。 例如,若 a所指数组中的数据最初排列为: 9, 1, 4, 2, 3, 6, 5, 8, 7,删除奇数后 a所指数组中的数据为: 4, 2, 6, 8,返回值为 4。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #nclude stdio h #define N9 int fun(int a, i 三、程序修改题 42 下列给定程序的功能是:读入一个 整数 k(2k10000),输出它的所有质因子 (即所有为素数的因子 )。例如,若输入整数 2310,则应输出 2, 3,

22、5, 7, 11。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #include stdio h *found* IsPrime(int n); int i, m; m=1; for(i=2; i n; i+) * 四、程序设计题 43 请 编写函数 void fun(int x, int pp, int木 n),它的功能是:求出能整除 x且不是偶数的各整数,并按从小到大的顺序放在 pp所指的数组中,这些除数的个数通过形参 n返回。 例如,若 X中的值为 30,则有 4个数符合

23、要求,它们是 1、 3、 5、 15。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h #include stdlib h void fun(int x, 国家二级( C语言)机试模拟试卷 155答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 Q(1: 35)则队列的存储空间为 35;队空时: front=rear(初始化时:front=rear);队满时: (rear+1) n=front, n为队列长度 (所用数组大小 )。因此当执行一系列的出

24、队与入队操作, front=rear”,则队列要么为空,要么为满。 2 【正确答案】 B 【试题解析】 栈是 “先进后出 ”,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。 3 【正确答案】 C 【试题解析】 数据的逻辑结构是描述数据之间的关系,分为两大类:线性结构和非线性结构。线性结构是 n个数据元素的有序 (次序 )集合,指的是数据元素之间存在着 “一对一 ”的线性关系的数据结构。常用的线性结构有:线性表、栈、队列、双队列、数组、串。非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。常见的非线性结构有:树 (二叉树等 )、图 (网等 )、广义表。 4 【正确答案】

25、D 【试题解析】 单一的数据结构 关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构 二维 表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,可以描述现实世界的实体以及实体间的各种关系。 5 【正确答案】 A 【试题解析】 部门到职员是一对多的,职员到部门是多对一的,因此,实体部门和职员间的联系是 1: m联系。 6 【正确答案】 C 【试题解析】 C语言中最基本的数据类型包括整型、实型、字符型。 7 【正确答案】 C 【试题解析】 数据字典 (DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等

26、 进行定义和描述,其目的是对数据流程图中的各元素做出详细的说明。 8 【正确答案】 B 【试题解析】 软件可行性分析报告是软件可行性研究的依据。 9 【正确答案】 A 【试题解析】 黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。 10 【正确答案】 A 【试题解析】 软件设计阶段的主要任务包括两个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成;二是进行软件的系统分析,了解用户的需 求,定义应用功能,详细估算开发成本和开发周期。 11 【正确答案】 B 【试题解析】 C语言是一种成功的系统描述语言,

27、具有良好的移植性,每个后缀为 C的 C语言源程序都可以单独进行编译。 12 【正确答案】 A 【试题解析】 用户标识符不能以数字开头, C语言中标识符是区分大小写的,关键字不能用作用户标识符。 13 【正确答案】 B 【试题解析】 当用指数形式表示浮点数据时, E的前后都要有数据,并且 E的后面数要为整数。 14 【正确答案】 A 【试题解析】 C语言是由函数 组成的,函数是 C语言的基本单位。所以可以说 C语言主要是借助定义函数来实现程序模块化的。 15 【正确答案】 C 【试题解析】 在 C语言中,可以用一个标识符来表示一个常量,称为符号常量。符号常量在使用之前必须先定义,其一般形式为:

28、#define标识符常量。 16 【正确答案】 C 【试题解析】 在输入 3和 5之间除逗号外不能有其他字符。 17 【正确答案】 C 【试题解析】 char类型数据占 1个字节。 18 【正确答案】 B 【试题解析】 在一个表达式中,括号的优先级高 ,先计算 3!=4,为真即 1, 1 2为假。 19 【正确答案】 D 【试题解析】 选项 A,当 c1和 c2相等时,不成立;选项 B, a*b要用括号括起来;选项 c, case与后面的数字用空格隔开。 20 【正确答案】 D 【试题解析】 考查 while循环以及自加运算,其中 a+是 a先参与运算再自加1,而 +b是 b先自加 1再参与运

29、算。第一次进入循环: a的值是 -2, b的值是 0,判断条件为一 2&1, 2个值都是非零, while判断条件成立,接着进入第二次循环。这时 a的值是 -1, b的值是 1,判断条件即为 -1&2,表达式的值为真,进入第三次循环。这时 a的值是 0, b的值是 2,判断条件为 0&3,与运算左边的值为 O,即判断为假。此时跳出循环,执行 printf语句,这时 a的值是 1, b的值是2。 21 【正确答案】 D 【试题解析】 本题通过语句 “*p=a”将一维数组 a的首地址的值赋值给变量 p,即p的值为 2。执行 for循环, ai=*p+,表示将 p的值赋给 ai后,再进行 +操作。因

30、此 4次循环后 a2的值为 6。故 D选项正确。 22 【正确答案】 D 【试题解析】 比较两个字符串大小用函数 strcmp(str1, str2),空字符串有结尾符,所以也要占用字节,两个双引号表示地是空字符串。 23 【正确答案】 B 【试题解析】 本题主要考查指针与数组。观察题目,可以发现, *p=&aa00语句实际是将数组 aa的首地址赋给指针变量 p,将 i的值带入 for循环中, i=0时,aa01=3, *p=2, *p输出地是指针所指向的数组值,此时 p所指向地是aa00,输出 2,而 i=1时执行了 +p操作,使指针向后移动指向 aa01,所以在输出 *p时应为 3。故 B

31、选项正确。 24 【正确答案】 B 【试题解析】 第一次循环时, b=1,输出结果为 B;第二次循环时, b=3,输出结果为 D;第三次循环时, b=8,输出结果为 I。 25 【正确答案】 A 【试题解析】 本题考查字符数组的初始化。 B选项中赋值号右侧是赋值给一个字符串数组,而左边是一个字符数组,所以错误; C选项中字符串包含 6个字符,所以不能赋值给左边只能存放 5个字符的字符串数组中。 D选项 gets函数中参数需要指定长度。故 A选项正确。 26 【正确答案】 D 【试题解析】 本题考查函数的递归调用。执行 fun(9)后, fun(9)=9-(7(-5-(3-f(1)=7,故 D选

32、项正确。 27 【正确答案】 A 【试题解析】 for循环结束后,数组 a的值并没有变化,由于数组是由 O开始,所以 a2的值是 30。 28 【正确答案】 B 【试题解析】 fun函数功能是把数组 a的每一行的最大值赋给 b, a的第一行的最大值是 3,第二行的最大值是 6,第三行的最大值是 9,所以答案是 3, 6,9,。 29 【正确答案】 A 【试题解析】 程序执行过程为:定义字符串指针 r,并为其初始化为 “01234”,调用函数 fun(r),将指针传入函数 while循环找到字符串的结束符地址,然后使这个指针指向结束符下一个单元,结束循环。返回字符串首地址与结束符下一个地址之差,

33、也即是字符串长度加 1。输出地址差为 6。 30 【正确答案】 A 【试题解析】 选项 B不能把一个字符串赋值给一个字符变量,选项 C和 D犯了同样的错误是把字符串赋给了数组名。 31 【正确答案】 C 【试题解析】 在 fun()函数中定义了指针 p,首先把 s地址赋给 p,再通过 while函数移动指针 p,当 p指针指向单元为 0时,退出 while循环,返回此时 p和 s地址之差,即字符串长度。 32 【正确答案】 A 【试题解析】 for循环完成的功能是把二维数组 a的第一列的字母按从小到大排序,其他列的字母不变。 33 【正确答案】 B 【试题解析】 funl是输出局部变量的值,

34、fun2是把全局变量的值改成 3, 4,所以输出结果是 5634。 34 【正确答案】 A 【试题解析】 第一次调用 func函数时输出 4,第二次调用 fune函数时 num值并不会释放,仍然是上次修改后的值 4,第二次调用结果为 8,所以输出结果是 48。 35 【正确答案】 C 【试题解析】 fun函数功能是新开辟内存空间存放 a和 b的地址, q的地址并没有变化,所以应该还是指向地址 a。 36 【正确答案】 D 【试题解析】 fun函数是为结构体数组的第二个数赋值,数组的第一个数没有变化,所以正确答案应选 D。 37 【正确答案】 A 【试题解析】 在不同编译单位内用 extem说明

35、符来扩展全局变量的作用域,extem可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域,故选 A。 38 【正确答案】 A 【试题解析】 宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,故选 A。 39 【正确答案】 B 【试题解析】 2的二进制数为 010,左移两位后的二进制数为 01000,转成二制数为 8, (3|2)为真即 1, 8 1=8,所以结果为 8。 40 【正确答案】 D 【试题解析】 这是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为 6, 5, 4, 3, 2, 1,。 二、程序填空题 41 【正确答案】

36、(1)ai 2 (2)aj (3)j 【试题解析 】 本题考查: if语句条件表达式;数组变量赋值;函数返回值。 填空 1: if语句条件表达式,判断数组元素是否为偶数,对 2求余,结果为 0,则为偶数;结果为 1则为奇数。 填空 2:如果该数组元素是偶数,则将其值保存。 填空 3:最后按要求将偶数个数通过 return语句返回给 main函数。 三、程序修改题 42 【正确答案】 (1)IsPrime(int n) (2)if(!(n i) 【试题解析】 本题考查:函数定义的格式; if条件的判断语句。这些知识点必须掌握,因为经常考到。 (1)函数定义格式错误, 函数定义时后面不能加 “;

37、”,所以应该去掉分号。 (2)根据题意可知, if条件语句判断 n是否可以整除 i,如果不能整除则为质因子,所以 if!(n i)应改为 if(!(n i)。 四、程序设计题 43 【正确答案】 void fun(int x, int pp, int*n) int i, j=0; for(i=l; i =x; i-i+2) *i的初始值为 1,步长为 2,确保 i为奇数 * if(x i=0) *将能整除 x的数存入数组 pp中 * ppj+=i; *n=j; *传回满足条件的数的个数 * 【试题解析】 本题考查:偶数的判定方法;整除的实现。 本题题干信息是:能整除 x且不是偶数的所有整数。循环语句中变量 i从 1开始且每次增 2,所以 i始终是奇数。 整除的方法,在前面已经讲过多次,这里就不再赘述了。对于本题目要求的不是偶数的判定方法,即该数对 2求余不为 0。除以上方法外,还可以通过 for循环语句直接把偶数筛出去,确保参与操作的数均为奇数。

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

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

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