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

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

1、国家二级( C语言)机试模拟试卷 71及答案与解析 一、选择题 1 线性表常采用的两种存储结构是 ( )。 ( A)散列方法和索引方式 ( B)链表存储结构和数组 ( C)顺序存储结构和链式存储结构 ( D)线性存储结构和非线性存储结构 2 软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和 ( )。 ( A)阶段性报告 ( B)需求分析 ( C)需求总结 ( D)都不正确 3 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 ( )。 ( A)需求分析 ( B)详细设计 ( C)软件设计 ( D)概要设计 4 对建立良好的程序设计风格

2、,下面描述正确的是 ( )。 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 5 下列工具中,不属于结构化分析的常用工具的是 ( )。 ( A)数据流图 ( B)数据字典 ( C)判定树 ( D) N S图 6 在软件生产过程中,需求信息的来源是 ( )。 ( A)程序员 ( B)项目经理 ( C)设计人员 ( D)软件用户 7 对关系 S和 R进行集合运算,结果中既包含 S中的所有元组也包含 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运算 ( C)差运算 ( D)积运算 8 设有关

3、键码序列 (Q, G, M, Z, A, N, B, P, X, H, Y, S, T, L, K, E),采用堆排序法进行排序,经过初始建堆后关键码值 B在序列中的序号是 ( )。 ( A) 1 ( B) 3 ( C) 7 ( D) 9 9 数据库的故障恢复一般是由 ( )来执行恢复。 ( A)电脑用户 ( B)数 据库恢复机制 ( C)数据库管理员 ( D)系统普通用户 10 下列选项中,不属于数据模型所描述的内容的是 ( )。 ( A)数据类型 ( B)数据操作 ( C)数据结构 ( D)数据约束 11 程序设计的任务包括 ( )。 ( A)编写程序代码并上机调试 ( B)确定所用数据结

4、构 ( C)确定所用算法 ( D)以上选项均正确 12 下列合法的标识符是 ( )。 ( A) 123 ( B) #256 ( C) a 55 ( D) abhj1_2_3 13 以下程序的运行结果是 ( )。 #include main() int a 3,b 4,c 8,d 4,m 1, n 3; printf(“ d n“, (m a b) main() int a100, k, m; m fun(a); printf(“The result is: n“); for(k 0; k m; k )printf(“ 4d“, ak); printf(“ n“); 四、程序设计题 43 学生的

5、记录由学号和成绩组成, N名学生的数据已在主函数中放入结构体数组s中,请编写函数 fun,它的功能是:把分数最低的学生数据放在 b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 注意:部分源程序在文件 PROG1 C文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct char num10; int s; STREC; int fun(STREC*a, STREC*b) main() STREC sN “GA05“,85, “GA03“

6、,76, “GA02“,69, “GA04“,85,“GA01“, 91, “GA07“, 72, “GA08“,64, “GA06“,87, “GA015“, 85),“GA013“, 91), “GA012“,64, “GA014“,91, “GA011“, 91),“GA017“,64, “GA018“,64, “GA016“,72); STREC hN; int i,n; FILE*out; n fun(s, h); printf(“The d lowest score: n“, n); for(i 0; i n; i ) printf(“ s 4d n“,hi num, hi s);

7、 printf(“ n“); out fopen(“out dat“, “w“); fprintf(out, “ d n“, n); for(i 0; i n; i ) fprintf(out, “ 4d n“,hi s); fclose(out); 国家二级( C语言)机试模拟试卷 71答案与解析 一、选择题 1 【 正确答案】 C 【试题解析】 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。 2 【正确答案】 B 【试题解析】 软件需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。 需求获取的目的是确定对目标系统的各方面需求。涉及到的

8、主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。 需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。 编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设 计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。 需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。 3 【正确答案】 A 【试题解析】 软件生命周期的主要活动阶段为:可行性研究和计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。其中需求分析是对开发软件提出的需求进行分析并给出详细定义,

9、即准确地确定软件系统的功能,编写软件规格说明书及初步的用户手册,提交评审。 4 【正确答案】 A 【试题解析】 程序设计应该简单易懂,语句结构应该简单直接,不应该为提高效率而把语句复杂化。 5 【正确答案】 D 【试题解析】 结构化分析的常用工具有数据流图、数据字典、判定树和判定表。 6 【正确答案】 D 【试题解析】 软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求,是由用户提出的。 7 【正确答案】 A 【试题解析】 关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的所有元组。 8 【正确答案】 B 【试题解析】 建堆的算法:首 先将要排序

10、的所有关键码放到一棵完全二叉树的各个结点中 (这时的二叉树不具备堆的特性 ),然后,从 i n 2(n为结点的个数 )的结点 Ki开始,逐步把以 Kn 2, Kn 2 1, Kn 2 2, 为根的子树排成堆,直到以K1为根的树排成堆,就完成了建堆过程。此题中, n 16, i 16 2 8,即从第8个结点开始,建堆完成后如下图: 所以经过初始建堆后关键码值 B在序列中的序号是 3。 9 【正确答案】 C 【试题解析】 数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复 。 10 【正确答案】 A 【试题解析】 数据模型描述的内容包含数据结构、数据操作和数据约束。 11

11、【正确答案】 D 【试题解析】 程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项 A、 B、 C等方面。 12 【正确答案】 D 【试题解析】 C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。 “ ”、 “ ”不允许出现在标识符中。 13 【正确答案】 A 【试题解析】 逻辑与 (&)运算符的功能是:当 “&”运算符两边的运算对象均为1时,整个表达式的值为 1,否则为 0。因为 a 3 b 4,即 m 0,所以整个表达式的值为 0。 14 【正确答案】 D 【试题解析】 本题考查常量定义。数据常量可有 10进制、 8进制、

12、 16进制、指数法等, 8进制数字为 0 7,第一个字符为 0,而不是 0,因此选项 A和 B错误。为指数法时,指数部分须为整形,因此选项 C错误,选项 D中数字后加入 L是说明此变量为长整型。 15 【正确答案】 A 【试题解析】 scanf()函数中格式控制字符串是为了输入数据用的,无论其中有什么字符 ,在输入数据时,按照一一对应的位置原样输入这些字符。 16 【正确答案】 D 【试题解析】 不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。 long、 int和 short类型数据占用内存大小是由选择何种 C编译系统决定的。 17 【正确答案】 D 【试题解析】 因为没有

13、 break语句,当 k 2的时候,会顺序执行两条语句, k1的时候,会顺序执行 3条语句。 18 【正确答案】 B 【试题解析】 因为在输入格式控制符中指定变量 j的输入格式控制符为 “ 2d”,即变量 j所 占的宽度为 2,所以变量 j只接收输入数据的前两位,从第 3位开始直到空格之间的输入整数都会被保存到变量 y中,因为 y为浮点型数据,所以输出结果为选项 B。 19 【正确答案】 B 【试题解析】 dowhile 循环的执行过程如下: 执行 do后面的循环体中的语句。 计算 while后一对圆括号中表达式的值。当值为非 0时,转去执行步骤 ;当值为 0时,执行步骤 。 退出 dowhi

14、le 循环。对于本题变量 i的初始值等于“0”,接着执行 do后面的循环体中的语句,输出变量 i的值 0。再判断 while后面括号中表达式 i 的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,所以再次输出 i的值 “1”。 20 【正确答案】 B 【试题解析】 条件表达式的形式为: “表达式 17表达式 2:表达式 3”。其含义为:当 “表达式 1”的值为非零时,求出 “表达式 2”的值,此时 “表达式 2”的值就是整个条件表达式的值;当 “表达式 1”的值为零时,求出 “表达式 3”的值,此时 “表达式 3”的值就是整个条件表达式的值。对于本题来说,当表达式 EXP为

15、非 O值时条件成立,即执行语句 i;当 EXP等于 0时,执行语句 j-;这等同于条件表达式 “(EXP! 0)?i: j; ”。 21 【正确答案】 C 【试题解析】 y的初值为 9,所以在 for循环中,当 y的值为 9、 6或 3 时, if语句的条件成立,执行输出语句,输出表达式 -y的值。因为自减符号在 y的前面,所以首先 y自减 1,然后再输出 y的值,故输出结果为 8 5 2。 22 【正确答案】 B 【试题解析】 scanf()语句中用 “空格 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格; getchar()函数用于输入字符,其调用形式为:c

16、h getchar( ),getehar( )函数从终端读入一个字符作为函数值,把读入的字符赋给变量 ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入。Enter键时,读入才开始执行。 gets()函数的调用形式为: gets(str_adr, ),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 getc()函数的调用形式为: ch gete(pf)其中 pf是文件指针。函数的功能是从 pf指定 的文件中读入一个字符,并把它作为函数值返回。 23

17、 【正确答案】 B 【试题解析】 本题考查 ifelse语句。第一个 if语句,先判断条件, a b成立,则执行下面的语句;第二个 if语句,先判断条件, c d不成立,则执行其对应的else语句;第三个 if语句,先判断条件, a c成立,执行其后语句:第四个 if语句,先判断条件, b c成立,执行语句 x 2。 24 【正确答案】 B 【试题解析】 本题考查函数调用的基本概念。因为函数的结果是一个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌 套,但是函数调用可以嵌套。 25 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。函数 reverse将数组 b进行了逆置

18、,此时 b10 10,9,8,7,6,5,4,3,2,1),后面 for语句的功能是将 b中的后 3个数累加,并将结果放在 s中,最后将 s输出,结果 s 1 2 3 6。 26 【正确答案】 D 【试题解析】 &是取地址运算符, y &a是将 a的地址赋给 y,而 a的地址没有发生变化,因此 y的值为 E2000。 27 【正确答案】 B 【试题解析】 本题考查如何 通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量 s3,并赋了初值。在主程序中,定义了一个指向结构体变量 s的指针 p,要使表达式的值为 5,就应该引用 s1 m的值,使指针 p指向s1, p可以实现将 p指

19、针加 1,指向 s1。 28 【正确答案】 D 【试题解析】 本题考查数组的 4个知识点: c语言中,二维数组或多维数组元素排列的顺序是按行存放; 不同数组的元素之间可以相互赋值; 字符型数组中存放的是字符, int型数组中存放的是字符对应的 ASCII码值,虽然在计算机内部字符 常量都是作为整型量来处理的,其对应的整数值就是 ASCII码值,但两者并不完全等价; 数组名后的方括号内可以为常量,也可以为常量表达式,但不可以为变量。 29 【正确答案】 A 【试题解析】 本题考查字符串复制函数和字符串连接函数:字符串复制函数strcpy(s1, s2)是把 s2的字符串复制给 s1,执行后 s1

20、 089;字符串连接函数strcat(s1, s2),功能是把 s2字符串连接到 s1字符串的末尾,执行后 s1 08967。 30 【正确答案】 C 【试题解析】 这种声明也具有定义的作用 ,并将预留存储空间。 register说明的声明等价于 auto说明的声明,所不同的是, reRister暗示了声明的对象将被频繁地访问,将尽可能存储在寄存器中。如果一个对象被声明为 register,则将不能对它应用一元运算符 &,声明为 register但实际按照 auto类型处理的对象的地址进行计算是非法的。 static将声明的对象说明为静态存储类。这种对象可以用在函数内部或者函数外部。在函数内部

21、,该说明符将引起存储空间的分配,具有定义的作用。在函数外部,该说明符将引起声明对象为具有内部链接。另外,若将其定义为 static类型,则其初值默认为 0。 函数内部的 extern声明表明,被声明的对象的存储空间定义在其他地方。在函数外部,说明声明的对象具有外部链接。 typedef说明符并不会为对象预留存留空间。 31 【正确答案】 D 【试题解析】 本题考查宏的使用规则: 字符替换格式: #define标识符字符串,标识符称为宏名,无类型; 双引号中出现的宏名不替换; 宏名的定义通常用大写字母,但不是必须用大写; 宏定义不是赋值语句,不做语法检查。 32 【正确答案】 B 【试题解析】

22、本程 序首先定义了静态字符数组 a,然后将指针 p指向数组 a的首地址,第一次 for循环, p a, p指向数组的第一个元素, *p是取指针 p所指地址的内容,输出 p;第二次 for循环, p p 2,则 p指向数组的第三个元素, *p是取指针 p所指地址的内容,输出 0;第三次 for循环, p p 2,则 p指向数组的第 5个元素, *p是取指针 p所指地址的内容,输出 r;第四次 for循环, p p2,则 p指向数组的第 7个元素, *p是取指针 p所指地址的内容,输出 m;结束循环。 33 【正确答案】 D 【试题解析】 本题考查数据文件的基本 概念。 文件由数据流形式组成,可以

23、按数据的存放形式分为二进制文件和文本文件; c语言既能读写文本文件,又可以读写二进制文件。 34 【正确答案】 C 【试题解析】 “s”是代表数组首地址的地址常量,不是变量, “ ”左边不能出现常量,因此 s “ABCDEF“语法错误。 “*s”和 “s”一样; “*s”是指变量地址,不能给其赋字符串。 35 【正确答案】 A 【试题解析】 分析 fun函数程序段,可知 fun函数要实现的功能是将 s中第 (t 1)个元素前面 (含该元素 )的元素逆置赋给数组 p。由于 fun函数定义了静态变量 t3,因此,在主函数中调用函数 fun(a, &x)时,就是将数组 a中前 4个元素逆置赋给数组

24、x,最后输出 x数组。 36 【正确答案】 D 【试题解析】 在 C语言中,一个整型变量占用 4-个字节的内存单元,并按整型数的存储方式存放数据,允许存放的数值范围是: 2147483648 2147483647。所以在这个题目中定义的宏变量 MAX的值就是整数范围内最大的数值,因而对于任意一个整数来说,其值都比 MAX小,而判断最小值,是当找到的数比 min小时,才交换。 37 【正确答案】 C 【试题解析】 程序首先将指针 p指向结构体数组 aa的首地址,通过 p x引用了结构体数组 aa0的第一个成员 2; (p x)是将 p x的值加 1,所以输出结果为 3。 38 【正确答案】 B

25、【试题解析】 本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。在本题中 student这个结构体中包含了结构体 s。所以对结构体变量 w中 gradel成员的引用是 w s gradel或 w s gradel。 39 【正确答案】 B 【试题解析】 本题考查的是位 运算符的应用。 x和 y写成二进制表示分别为 x00000011, y 00000110,由于左移位运算符 “ ”的优先级高于按位异或运算符“ ”,左移两位后 y 2 00011000,此结果和 x按位异或后 xy 200011011。 40 【正确答案】 B 【试题解析】 本题考查函数 fwrit

26、e的使用。函数 fwrite的调用形式为: int fwrite(char *pt,unsigned n,FILE *fp);其功能是把 pt所指向的 n*size个字节输出到 fp,所指文件中,第二次调用该函数时,从 文件的第一个位置开始写入,之前已有的会被覆盖掉,如果第二次写入的长度没有第一次的长,则后面短出的部分保留原样。 二、程序填空题 41 【正确答案】 (1)l (2)2*i (3) ( 1) 【试题解析】 第一空:由 “S S k*(2*i 1)*(2*i 1) (t*t); ”可知 t*t表示的是级数项的分母, t 2*i, t 2, 4, 6 ,故 t的初始化值应为 1,因此

27、第一空处应为 “1”。 第二空:由第一空的分析可知,第二空处应为 “2*i”。 第三空:由 “s s k*(2*i 1)*(2*i 1) (t*t); ”可知, k是级数项的 ( 1)*部分,所以在循环中 k是每次都乘以 1,故第三处应为 “( 1)”。 三、程序修改题 42 【正确答案】 (1)a2 k 10; (2)return i; 【试题解析】 (1)第一标识下 “a2 k 10; ”是截取十位数,截取个位数是 k10,而截取十位数是 k 10,因此第一标识下应改成 “a2 k 10; ”。 (2)变量 i是标识数组 b的下标也就是数组的个数,题目中 “return k; ”返回的是循环条件表达式中的变量,所以这里应该将 “returnk; ”改为 “return i; ”。 四、程序设计题 43 【正确答案】 int i, j 0, min a0.s; for(i 0; i N; i ) if(min ais) j 0; bj ai; min ai s; else if(min=ai s) bj ai; return j; 【试题解析】 (1)要把最低分数的学生数据放在数组中,首先求出最低分数,再使用一个 for循环把所有的成绩进行比较,找出最低的分数来。 (2)找出所有与最 低分数相等的学生,并将最低分数的人数累加。

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

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

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