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

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

1、国家二级( C语言)机试模拟试卷 46 及答案与解析 一、选择题 1 算法的时间复杂度是指 ( A)设计该算法所需的工作量 ( B)执行该算法所需要的时间 ( C)执行该算法时所需要的基本运算次数 ( D)算法中指令的条数 2 设循环队列存储空间为 Q( 1:50) ,初始状态为 front=rear=50。经过一系列入队和退队操作后, front=rear=25,则该循环队列中元素个数为 ( A) 26 ( B) 25 ( C) 24 ( D) 0或 50 3 某棵树的度为 4,且度为 4、 3、 2、 1的结点数分别为 1、 2、 3、 4,则该树中的叶子结点数为 ( A) 11 ( B)

2、 9 ( C) 10 ( D) 8 4 设某二叉树的前序序列与中序序列均为 ABCDEFGH,则该二叉树的后序序列为 ( A) HGFEDCBA ( B) EFGHABCD ( C) DCBAHGFE ( D) ABCDEFGH 5 下列叙述中正确的是 ( A)二分查找法适用于任何存储结构的有序线性表 ( B)二分查找法只适用于顺序存储的有序线性表 ( C)二分查找法适用于有序循环链表 ( D)二分查找法适用于有序双向链表 6 下列序列中不满足堆条件的是 ( A)( 98, 95, 93, 96, 89, 85, 76, 64, 55, 49) ( B)( 98, 95, 93, 94, 89

3、, 85, 76, 64, 55, 49) ( C)( 98, 95, 93, 94, 89, 90, 76, 64, 55, 49) ( D)( 98, 95, 93, 94, 89, 90, 76, 80, 55, 49) 7 下面属于面向对象方法中对象基本特点的是 ( A)多态性 ( B)方法唯一性 ( C)可修改性 ( D)灵活性 8 下面可以作为软件需求分析工具的是 ( A)包图 ( B)程序流程图 ( C) PAD图 ( D)数据流程图 (DFD图 ) 9 数据库的数据模型分为 ( A)层次、关系和网状 ( B)网状、环状和链状 ( C)大型、中型和小型 ( D)线性和非线性 10

4、 数据库系统的数据独立性是指 ( A)不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序 ( B)不会因为数据的变化而影响应用程序 ( C)不会因为存储策略的变化而影响存储结构 ( D)不会因为某些存储结构的变化而影响其他的存储结构 11 以下叙述正确的是 ( A) C程序由函数组成,可以不包含 main函数 ( B)每个 C程序文件中的 main函数都应当放在最前面 ( C)每个 C程序文件都应当包含一个 main函数 ( D)每个 C程序都只能有一个 main函数 12 以下叙述错误的是 ( A)计算机可以直接识别由十六进制代码构成的程序 ( B)可以连续执行的指令的集合称为 “程

5、序 “ ( C)程序是人与计算机 “对话 “的语言 ( D)计算机可以直接识别由 0和 1组成的机器语言代码 13 以下与数学表达式 “0 x 5且 x2“ 不等价的 C语言逻辑表达式是 ( A) (0 x 5) else printf(“passn“); ( B) if(math 60) printf(“failn“); else if(engl =60) printf(“passn“); else printf(“failn“); ( C) if (math 60) |(engl 60) printf(“failn“); else printf(“passn“); ( D) if (mat

6、h =60) else printf(“failn“); 16 设有以下程序段 main( ) int xMN; . Arrlet(x); . 则作为函数 Arrlet的形参,以下表示形式非法的是 ( A) int xM ( B) int (*x)N ( C) int x N ( D) int xMN 17 有以下程序 #include stdio.h void fun( int n ) if( n/2 ) fun(n/2); printf(“%d“,n%2 ); main() fun( 10 ); printf(“n“); 程序运行后的输出结果是 ( A) 0101 ( B) 1000 (

7、C) 1100 ( D) 1010 18 有以下程序 #include stdio.h void fun(char *a,char *b) char *s=a; while(*s) s+; s-; while(s =a) *b=*s; s-; b+; *b=0; main() char s1=“abc“,s26; fun(s1,s2); puts(s2); 程序运行后的输出结果是 ( A) cbaabc ( B) abc ( C) cba ( D) abccba 19 有以下程序 #include stdio.h main( ) char b410; int i; for ( i=0; i 4

8、; i+ ) scanf( “%s“, bi ); for( i=3; i =0; i- ) printf( “%s “, bi ); printf( “n“ ); 执行时若输入 : Peach flower is pink.回车 ,则输出结果是 ( A) Peachflower is pink. ( B) pink. is flower Peach ( C) Peachflowerispink. ( D) Pink is flower peach. 20 有以下程序 #include stdio.h int * f(int *s) s1 +=6; *s=7; s+=2; return s;

9、main( ) int a5=1,2,3,4,5, *p=a; p= f(p); printf( “%d,%d,%dn“, a0, a1, *p ); 程序运行后的输出结果是 ( A) 9,8,9 ( B) 7,8,7 ( C) 7,8,3 ( D) 1,2,1 21 设有定义: char s81; int i=0; 以下不能将一行(不超过 80个字符)带有空格的字符串正确读入的语句或语句组是 ( A) scanf(“%s“,s); ( B) while(si+=getchar()!=n);si=0; ( C) gets(s); ( D) do scanf(“%c“, while(si+!=n

10、); si=0; 22 以下叙述中错误的是 ( )。 ( A) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 ( B) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 ( C)用 C语言编写的程序称为源程序,它以 ASCII代码形式存放在一个文本文件中 ( D) C语言 源程序经编译后生成后缀为 .obj的目标程序 23 以下选项中,合法的一组 C语言数值常量是 ( )。 ( A) 12. 0Xa23 4.5e0 ( B) 028 .5e 3 0xf ( C) .177 4e1.5 0abc ( D) 0x8A 10,000 3.e5 24 以下

11、选项中不合法的标识符是 ( )。 ( A) float score3; ; void fun(struct Student a) struct student b; int i; /*found*/ b=【 1】 ; b sno=10002; /*found*/ strcpy(【 2】 , “LiSi”); printf(“nThe data after modi fied: n”); printf(“ nNo: ld Name: S nScores: ”, b sno, b name); for(i=0, i 3; i+) /*found*/ printf(“ 6 2f”, b 【 3】 )

12、; printf(“ n”); main() struct student S=10001, “ZhangSan”, 95, 80, 88; int i; printf(“ n nThe original data: n”); printf (“ nNo: ld Name: sn Scores: ”, s sno, s name); for(i=0, i 3, i+) printf(“ 6 2f”, S Scorei); printf(“ n”); fun(S); 三、程序修改题 42 下列给定程序中函数 fun的功能是:根据整型形参 m,计算如下公式的值:例如,若 m的值为 5,则应输出 1

13、 463611。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #includestdio h double fun(int m) double Y=1 0; int i; /*found*/ for(i=2, i m, i+)/*found*/ Y+=1 (i*i); return(y); main() int n=5; printf(“ nThe result is 1 f n”, fun(n); 四、程序设计题 43 编写函数 fun,其功能是:删除一个宁符串中指定下标的字

14、符。其中, a指向原字符串,删除指定字符后的字符串存放在 b所指的数组中, n中存放指定的下标。 例如,输入一个字符串 “World”,然后输入 3,则调用该函数后的结果为“Word”。 注意:部分源程 序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdlib h #include stdio h #include conio h #define LEN 20 void fun(char a, char b, int n) void main() char str1LEN, str2LEN, in

15、t n; system(“CLS”); printf(“Enter the string: n”); gets(str1), printf(“Enter the positLon of the string deleted: ”); scanf(“ d”, n); fun(str1, str2, n); printf(“The new string is: s n”, str2); 国家二级( C语言)机试模拟试卷 46 答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量。它与 算法程序执行的具体时间并不一致,因为算法执行的具体时间受到所

16、使用的计算机、程序设计语言以及算法实现过程中许多细节的影响。算法的计算工作量是用算法所执行的基本运算次数来度量的。故选 C选项 2 【正确答案】 D 【试题解析】 循环队列是队列的一种顺序存储结构,用队尾指针 rear指向队列中的队尾元素,用排头指针 front指向排头元素的前一个位置。循环队列长度为50,由初始状态为 front=rear=50可知此时循环队列为空。入队运算时,首先队尾指针 rear进 1(即 rear+1),然后在队尾指针 rear指 向的位置插入新元素。特别的,当队尾指针 rear=50+1时,置 rear=1。退队运算时,排头指针 front进 1(即front+1),

17、然后删除 front指针指向的位置上的元素,当排头指针 front=50+1时,置 front=1。 若经过运算, front=rear可知队列空或者队列满,则队列中有 0或者 50个元素。故选 D选项 3 【正确答案】 A 【试题解析】 由题目可以知道,若四种度的结点分开成子树,共包含结点(4+1)+2(3+1)+3(2+1)+4(1+1)=30 个,当组合成一棵树时,任选一 个度不为 0的结点作为根结点,则新的树结点个数为 30-2-3-4=21个,则该树中叶子结点个数为21-1-2-3-4=11。 故选择 A选项。 4 【正确答案】 A 【试题解析】 二叉树遍历可以分为 3种:前序遍历(

18、访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。 二叉树的前序序列与中序序列相同,说明此树结点没有左子树 ,且第一个节点 A为根节点,而后序遍历中根节点应在最后被访问,即节点 A在最后出现,由此推 断出后序遍历为 HGFEDCBA,故 A选项正确 5 【正确答案】 B 【试题解析】 二分法查找也称拆半查找,能使用二分法查找的线性表必须满足两个条件:顺序存储结构以及线性表有序。循环链表和双向链表都不是顺序存储结构,故 B 选项正确。 6 【正确答案】 A 【试题解析】 若有个元素的序列,将元素按

19、顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆:大根堆,所有结点的值大于或等于其左右子结点的值;小根堆,所有结点的值小于或等于其左右子结点的值。 B、 C、 D选项属于大根堆, A选项由于 98 95,判断属于大根堆,但 95 96,不满足条件,不是堆,故选择 A选项 7 【正确答案】 A 【试题解析】 对象的基本特点如下:由上表可知,本题选 A选项 . 8 【正确答案】 D 【试题解析】 需求分析方法可以分为结构化分析方法和面向对象的分析方法,结构化分析工具包括:数据流图( DFD)、数据字典( DD)、结构化英语、判定表和判定树等。 选项 B中的程序流程图和选项 C中的 PAD图是过

20、程设计工具,选项 A中的包图用于 UML 面向对象建模。故选 D选项 9 【正确答案】 A 【试题解析】 数据库 的数据模型分为层次、关系和网状三种。其中: 用树形结构表示实体及其之间联系的模型称为层次模型,模型中结点是实体,树枝是联系,从上到下是一对多的关系。 用网状结构表示实体及其之间联系的模型称为网状模型,它是层次模型的扩展,表示多个从属关系的层次结构,呈现一种交叉关系。 关系模型的数据结构非常单一,在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。故本题选 A选项。 10 【正确答案】 A 【试题解析】 数据库系统的数据独立性,是指数据库中数据独立于应用程序且不依赖于应用

21、程序,即数据的 逻辑结构、存储结构与存取方式的改变不会影响应用程序。故选 A选项。 11 【正确答案】 D 【试题解析】 虽然一个 C程序可以包含多个文件,但是有且只有一个文件中包含 main 函数,因此,选项 A,C错误。 main 函数可以放在程序的任意位置。因此,选项 B错误。答案为 D选项。 12 【正确答案】 A 【试题解析】 计算机只能识别机器码,机器码是由二进制构成的,因此只能识别二进制构成的代码程序 ,不可以直接识别由十六进制代码构成的程序,十六进制的代码必须转为二进制才能在计算机上直接执行。因此选项 A错误 13 【正确答案】 A 【试题解析】 0 x 5在 C语言里不能这样

22、直接表达,需要分步骤来实现,一般使用 x 0a0=7;修改 a1,*s=7修改 a0,s+=2;s指向第三个元素,返回 s,并赋给指针 p,则 *p=3。,因此打印7,8,3,答案为 C选项 21 【正确答案】 A 【试题解析】 scanf(“%s“,s);字符串不能整体输入,字符串数组一般采取循环输入,因此选择 A错误。 getchar()每一次读入一个字符, gets()一次读入多个字符,因此 B,C,D正确。答案为 A选项。 22 【正确答案】 A 【试题解析】 C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以 A)错误。由 C语言构成的指令序列称 C源程序, C源程序经过

23、 C语言编译程序编译之后生成一个后缀为 .OBJ的二进制文件 (称为目标文件 );最后要由 “连接程序 “把此 .OBJ文件与 C语言提供的各种库函数连接起来生成一个后缀为 .EXE的可执行文件。 23 【正确答案】 A 【试题解析】 C语言中八进制整型常量的开头是数字 0,十六进制整型常量的开头数字是 0x。 C语言中的实型常 量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以 “e“或 “E“后跟一个整数来表示以 10为底数的幂数,且规定字母 e或 E 之前必须要有数字,且 e或 E后面的指数必须为整数。 B)选项中 028错误,八进制中没有数字 8。 C)选项

24、中 4e1.5中 e后面的指数不是整数。 D)选项中 3.e5小数点后面缺少数字。 24 【正确答案】 A 【试题解析】 C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为 C语言中区分大小写,所以 B)选项中的 “FOR“可以作为标识符来用。 A)选项中含有非法字符 &,所以选择 A。 25 【正确答案】 C 【试题解析】 scanf(“%s“, s)用这种格式输入字符串时,空格和回车符都作为输入数据的分隔符而不能被读入,题目要求输入的字符串有空格,不符合题意要求,答案为 C选项。 26 【正确答案】 B 【试题解析】 取模运算符 “%“,二元

25、运算符,具有左结合性,参与运算的量均为整型。选项 B中的 a变量是 double实型,所以 B)不符合规定。 27 【正确答案】 D 【试题解析】 C语言中利用 sizeof()函数判断数据类型长度,在 VC6.0平台中,整型 int占有 4个字节, double型数据占有 8个字节。 28 【正确答案】 D 【试题解析】 按照从键盘输入的数据可以判断字符 1给了变量 a,字符 2给了变量 b,字符 CR即回车给了变量 c,字符 3给了变量 d。所以打印输出的结果为D)选项。 29 【正确答案】 A 【试题解析】 C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式

26、,所以选择 A。 30 【正确答案】 C 【试题解析】 本题中 if(a 1)b 1;与 else d 3; 之间多了语句 c 2;所以会出现 else语句的位置错误的编译失败提示。 31 【正确答案】 B 【试题解析】 case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行 switch 语句时,根据 switch 的表达式,找到与之匹配的 case语句,就从此case子句执行下去,不在进行判断,直到碰到 break 或函数结束为止。所以执行内层 switch(y)时只执行了 a,此时 a的值为 1。然后执行外层 case 2语句的 a; b; a为 2, b 为 1。所以结果

27、为 B)。 32 【正确答案】 C 【试题解析】 由于内层循环 for( k 1; k 3; k )后面直接跟了空语句“; “所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个 “*“,选择 C。 33 【正确答案】 D 【试题解析】 case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行 switch 语句时,根据 switch 的表达式,找到与之匹配的 case语句,就从此case子句执行下去,不再进行判断,直到碰到 break 或函数结束为止。简单的说break 是结束整个循环体, 而 continue是结束单次循环。 B)选项中当产生的随机数n 为

28、4时要执行打印操作。 C)选项中当产生的随机数为 1和 2时分别执行 case3与case4后面语句的内容。由于存在 break 语句所以 for循环不是固定执行 8次,执行次数与产生的随机数 n 有关系。 34 【正确答案】 A 【试题解析】 第一次调用 m f(f(f(1),第二次为 m f(f(2),第三次为 mf(4),即返回值为 8。 35 【正确答案】 A 【试题解析】 不能将一个整数直接赋给指针变量作为地址,所以 A)是错误的。函数的 返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。 36 【正确答案】 B 【试题解析】 指针是用来存放地址的变量,用 (类型名 *

29、指针变量名 )的形式定义。赋值时应将某个变量地址即 &x 赋给指针变量,所以选择 B。 37 【正确答案】 D 【试题解析】 D)选项中 x23定义的是一个两行三列的二维数组,而在给数组元素赋值时却赋成了三行,所以错误。 38 【正确答案】 A 【试题解析】 本题中的函数 fun()的功能是将数组 k 中前 5个元素倒序,所以返回后数组 k中的 元素排列是 5,4,3,2,1,6,7,8,9,10。所以打印输出 k2到 k7元素的值,即 321678,所以选择 A。 39 【正确答案】 A 【试题解析】 本题中由 fun 函数可知, b0 a00 a03 1 4 3, b1 a11 12 6

30、7 1, b2 a22 21 11 10 1, b3 a33 31 16 13 3。所以主函数中打印 y数组元素的值为 A)选项。 40 【正确答案】 C 【试题解析】 字符串的输入不能使用 scanf(“%s“, s);而应该使用 gets(s)。 二、程序填空题 41 【正确答案】 (1)a (2)b name (3)scorei 【试题解析】 填空 1:题目要求先将形参 a所指结构体变量中的数据赋给函数中的结构体变量 b,所以此处为 b=a;。 填空 2:通过 strcpy 函数修改 b 中的学生姓名,注意结构变量成员的表示方法。 填空 3: printf函数的输出结果。 三、程序修改题

31、 42 【正确答案】 (1)for(i=2; i =m; i+) (2)y+=1 0 (i*i);或 y+=(double)1 (i*i); 【试题解析】 (1)根据公式可以知道 for循环语句中变量 i的取值范围应该包括m。 (2)变量 y是 个 double型变量,而 i 是整型变量,所以要进行类型转换,改为y+=1 Q (i*i);或 y+=(double)1 (i*i);。 四、程序设计题 43 【正确答案】 void fun(char a, char b, int n) int i, k=0; for(i=0, ai!=0; i+) if(i!=n) *将不是指定下标的字符存入数组 b中 * bk+=ai; bk=0; *在字符串最后加上结束标识 * 【试题解析】 本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留,所以 if 语句条件表达式的内容是 if(i!=n)。字符串最后不要忘记加上字符串结束标识 0。

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

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

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