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

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

1、国家二级( C语言)笔试模拟试卷 259 及答案与解析 1 在结构化分析方法中,数据字典的作用是 ( )。 ( A)存放所有需要处理的原始数据 ( B)存放所有处理的结果 ( C)存放所有程序文件 ( D)描述系统中所用到的全部数据和文件的有关信息 2 一棵二又树共有 25个结点 ,其中 5个是叶子结点 ,则度为 1的结点数为 ( A) 16 ( B) 10 ( C) 6 ( D) 4 3 将 E-R图转换到关系模式时,实体与实体间的联系可以表示成 ( )。 ( A)属性 ( B)关系 ( C)键 ( D)域 4 数据库、数据库系统和数据库管理系统之间的关系是 ( )。 ( A)数据库包括数据

2、库系统和数据库管理系统 ( B)数据库系统包括数据库和数据库管理系统 ( C)数据库管理系统包括数据库和数据库系统 ( D)三者没有明显的包含关系 5 下列叙述中正确的是 _。 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 6 下面关于完全二叉树的叙述中,错误的是 _。 ( A)除了最后一层外,每一层上的结点数均达到最大值 ( B)可能缺少若干个左右叶子结点 ( C)完全二叉树一般不是满二叉树 ( D)具有结点的完全二叉树的深度为 log2n+1 7 在数据管理技术的发展过程中,可实现数据共享的是 ( ) ( A)人工管理阶段

3、( B)文件系统阶段 ( C)数据库系统阶段 ( D)系统管理阶段 8 关系代数运算是以 _为基础的运算。 ( A)关系运算 ( B)谓词运算 ( C)集合运算 ( D)代数运算 9 下列描述中正确的是 ( A)程序就是软件 ( B)软件开发不受计算机系统的限制 ( C)软件既是逻辑 实体,又是物理实体 ( D)软件是程序、数据与相关文档的集合 10 在顺序表 (3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30)中,用二分法查找关键码值 11,所需的关键码比铰次数为 _。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 11 执行下列程序时输入 45678

4、9123,输出结果是 ( )。 #include main() charm80; int c, i; scanf(“ c”, a=10; b=50; c=30; if(ab)a=b, b=c; c=a; printf(“a=%d b=%d c=%dn“,a,b,c); 程序的输出结果是 _。 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 22 设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回 值为 ( )。 ( A) EOF ( B)非 0值 (

5、 C) 0 ( D) NULL 23 若在定义语句: int a,b,c,*p=之后,接着执行以下选项中的语句,则能正确执行的语句是 ( )。 ( A) scanf(“%d“,a,b,C); ( B) scanf(“%d%d%d“,a,b,C); ( C) scanf(“%d“,p); ( D) scanf(“%d“, 24 设有语句: if(a=1)b=2; c=3;,以下语句中与之等价的是 ( )。 ( A) if(a=1)b=2; c=3; ( B) if(a!=1); elseb=2; c=3; ( C) if(a=1)c=3; b=2; ( D) (a=1)?b=2:a:=a; c=

6、3; 25 对于下列定义,不正确的叙述是 ( )。 union data int a; char b; double c; x=y; ( A)变量 x所占内存的长度等于成员 c的长度 ( B)变量 x的地址和它的各成员地址都是相同的 ( C)可以在定义时对 x初始化 ( D)不能对变量 x赋值,故 x=y非法 26 有以下程序 #inclUde stdio.h void fun(int *s, int n1, int n2) int i, j, t; i=n1; j=n2; while(i j) t=si; si=sj; sj=t; i+; j-; main() int a10=1, 2, 3

7、, 4, 5, 6, 7, 8, 9, 0, k; fun(a, 0, 3); fun(a, 4 ( A) 0987654321 ( B) 4321098765 ( C) 5678901234 ( D) 0987651234 27 已知字符 A的 ASCII码值是 65,字符变量 c1的值是 A, c2的值是 D。执行语句 printf(“%d,%d“,c1,c2-2) ;后,输出结果是 ( A) A,B ( B) A,68 ( C) 65,66 ( D) 65,68 28 以下函数返回 a所指数组中最小的值所在的下标值: fun(int*a, int n) int i, j=0, p; p=

8、j; for(i=j; i n; i+) if(ai aj)_return(p); 在下划线处应填入的是 ( )。 ( A) i=p ( B) ap=ai ( C) p=j ( D) p=i 29 在下列语句中,其含义为 “q是一个函数指针,该指针指向整型数据 ”的定义语句是 ( )。 ( A) int* *q; ( B) int( *q)(); ( C) int*q; ( D) int *q(); 30 已有定义 : int i,a10,*p;, 则合法的赋值语句是 ( A) p=100; ( B) p=a5 ( C) p=a2+2 ( D) p=a+2; 31 若要说明一个 类型名 STP

9、,使得定义语句 STP 轧等价于 char*s;,以下选项中正确的是 ( )。 ( A) typedef STP char*s; ( B) typedef *char STP; ( C) typedef STP *char; ( D) typedef char* STP; 32 2个指针变量不可以 _。 ( A)相加 ( B)比较 ( C)相减 ( D)指向同一地址 33 在下列叙述中,正确的一条是 _。 ( A)对 while循环、 dowhile 循环和 for循环,可以用 continue语句跳出循环 ( B)表达式 1+2 3和 sizeof(3.8)的结果分别为 24和 8 ( C)

10、函数 fputc(c,stdout)与 putchax(c)的结果相同 ( D)在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内存单元 34 下列关键字中,不属于 C语言变量存储类别的是 _。 ( A) register ( B) auto ( C) extern ( D) public 35 定义如下变量和数组: int i; int x33=1, 2, 3, 4, 5, 6, 7, 8, 9; 则下面语句的输出结果是 ( )。 for(i=0; i 3; i+) printf(“ d“ , xi2-i); ( A) 1 5 9 ( B) 1 4 7 ( C) 3 5 7

11、 ( D) 3 6 9 36 在表示 C语言的整型变量时,表示 “无符号整型 ”的符号是 ( ) ( A) unsigned int ( B) unsigned short ( C) long int ( D) unsigned long 37 有以下程序: void sum(int *a) a0=a1; ) main() int aa10=1,2,3,4,5,6,7,8,9,10, i; for(i=2;i =0;i-) sum( printf(“%dn“,aa0); 执行后的输出结果是 ( )。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 38 有以下程序: main() ch

12、ar s=“Yesn/No“,*ps=s; puts(ps+4); *(ps+4)=0; puts(s); 程序运行后的输出结果是 (选项 D中的第一行是空行 )( )。 ( A) n/No Yes /No ( B) /No Yes ( C) n/No Yes /No ( D) /No Yes 39 有以下程序 main() char a1=M,a2=m; printf(“%cn“,(a1,a2); 以下叙述中正确的是 ( )。 ( A)程序输出大写字母 M ( B)程序输出小写字母 m ( C)格式说明符不足,程序出错 ( D)程序运行时产生出错信息 40 若有下列说明和语句,则对结构体变量

13、 st中成员 i的引用方式不正确的是( )。 Struct stu int i; int name; st,*p; p= ( A) st.i ( B) *p.i ( C) (*p).i ( D) p- i 41 有以下程序 #include stdio.h main( ) printf(“%dn“,NULL); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) -1 ( D) NULL没定义,出错 42 需求分析的最终结果是产生【 】。 43 数据流图的类型有 和事务型。 44 在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间_的信息。 45 在面向对象的方法中

14、, _描述的是具有相似属性与操作的一组对象。 46 源程序文档化要求程序应加注释。注释一般分为序言性注释和【 】注释。 47 在关系模型中,把数据 看成是二维表,每一个二维表称为一个 ( )。 48 以下程序的运行结果是 _。 #include stdio.h main( ) FILE *fp;int a10=1,2,3,0,0,i; fp=fopen(“d2.dat“,“wb“); fwtite(a,sizeof(int) ,5,fp); fwrite(a,sizeof(int) ,5,fp); fclose(fp); fp=fopen(“d2.dat“,“rb“); fread(a,siz

15、eof(int) ,10,fp); fclose(fp); for(i=0;i 10;i+)printf(“%d“,ai); 49 若有定义 float b15,*p=b;,且数组 b的首地址为 200H,则 p+13所指向的数组元素的地址为 _。 50 执行下列语句段后, x的值是 _。 int*p,X; x=100; p= x=*p+50; 51 以下程序运行 后输出结果是【 】。 #include stdio, h void swap(int x.int y) int t; t = x;x = y;y = t: printf( “% d % d “,x,y); main ( ) iht

16、a=3,b=4: swap(a,b); prinff( “% d % d“ ,a,b); 52 该程序运行的结果是【 】。 #include stdio.h main() union EXANPLE struct int x; int y; in; int a; int b; e; e.a=1; e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf(“n%d, %d“, e.in.x, e.in.y); printf(“%d, %dn“, e.a, e.b); 53 下列程序的输出结果是 _。 #include stdio h int(int x,int

17、y,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int a=1, b=8, c=7, d=9; t(a,b,c,d); printf(“%d%dn“,c,d); 54 下面定义的结构体类型包含 3个成员,其中成员变量 x用来存入整型数据,成员变量 y用来存入实型数据,成员变量 next是指向自身结构体的指针。请将定义补充完整。 struct stu int x; 【 】 【 】 next; 55 函数 delete(s,i,n)是作用是从字符串 s中删除从第 i个字符开始的 n个字符,请填空。 void delete(char s,int i,

18、int n) int j,k,length=0; while(slength) 【 】 ; -i; j=i if( 【 】 ) k=i+n; if(i+n =length) while(k length) sj+=sk+; sj=0; 56 以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串: yes!,否则函数返回字符串: no!,并在主函数中输出,所谓回文即正向与反向的拼写 都一样,例如: adgda。请填空。 #include string.h char *huiwen(char*str) char*p1,*P2;int i,t=0; P1=s

19、tr;p2= 【 】; for(i=0;i strlen(str)/2;i+) if(*p1+!=*p2-)t=1; break; if( 【 】 )return(“yes!“); else return(“no!“); main() char str50; printf(“Input:“);scanf(“%s“,str); printf(“%sn“, 【 】 ); 57 已知 a所指的数组中有 N个元素。函数 fun的功能是,将下标 k(k0)开始的后续 元素全部向前移动一个位置填空。 void fun(int aN, int k) int i: for(i=k; i =ai; 国 家二级(

20、 C语言)笔试模拟试卷 259 答案与解析 1 【正确答案】 D 【试题解析】 在 C语言中,结构化分析方法中的数据字典的作用是描迹系统中所用到的全部数据和文件的有关信息。 2 【正确答案】 A 【试题解析】 根据二叉树的性质 ,在任意二叉树中 ,度为 O的结点 (即叶子结点 )总是比度为 2的结点多一个 ,故此度为 l的结点个数 =总结点数一叶子节点数一度为 2的节点数。 3 【正确答案】 B 【试题解析】 将 E-R图转换成指定 RDBMS 中的关系模式是数据库逻辑设计的主要工作。从 E-R图到关系模式 的转换是比较直接的,实体和联系都可以表示成关系。 4 【正确答案】 B 【试题解析】

21、数据库系统包括数据库和数据库管理系统。 5 【正确答案】 A 【试题解析】 一般将数据结构分为两大类型:线性结构与非线形结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 6 【正确答案】 B 【试题解析】 满二叉扔指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点 (叶子结点 )的二叉 数。 7 【正确答案】 C 8 【正确答案】 C 【试题解析】 关系代数运算是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包垂直分割 (投影 )、水平分割

22、(选择 )、关系的结合 (连接 )等。 9 【正确答案】 D 【试题解析】 软件指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。数据是使程序能正常操纵信息的数据结构。文档是与程序的开发 、维护和使用有关的图文资料。 10 【正确答案】 C 【试题解析】 二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 11比较的关键码分别为 15, 8, 10, 12四个。 11 【正确答案】 D 【试题解析】

23、 scanf函数中的 “ c”表示通过键盘只读入一个字符型的数据, “”,直接执行下一条语句 “c=a”,故 c变量的值为 10,所以输出结果为 “a=10 b=50 c=10”。 22 【正确答案】 B 【试题解析】 ANSI C提供的 feof 函数的功能是判断 fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则 feof 函数的值为 1,否则为 0,表示文件尚未结束。 23 【正确答 案】 C 24 【正确答案】 D 25 【正确答案】 C 【试题解析】 本题主要考查的知识点是联合体的内存使用。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内

24、存单元。不能在定义共用体变量时对它初始化。 26 【正确答案】 C 【试题解析】 函数 fun(int*s, int n1, int n2)的功能是对数组 s 中的元素进行首尾互相调换。所以在主函数中,当 fun(a, 0, 3)执行完后,数组 a12=4, 3, 2,1, 5, 6, 7, 8, 9, 0;再执行 fun(a, 4, 9),数组 a12=4, 3, 2, 1, 0, 9,8, 7, 6, 5;再执行 fun(a, 0, 9)后,数组 a12=5, 6, 7, 8, 9, 0, 1, 2,3, 4。 27 【正确答案】 C 【试题解析】 在 C语言中,字符型数据在内存中的存储形

25、式是 ASCII码值。当需要以整型格式输出字符时,输出的也是 ASCII码值。字符 “A”和 “D”的 ASCII码值分别为 65和 68。 28 【正确答案】 D 【试题解析】 p 是存放最小下标的变量,而 if后的表达就是实现这个目的的,当if 成立时,就把 小的下标放到 p 中,故选择 D选项。 29 【正确答案】 B 【试题解析】 本题考查指针函数。其定义的基本格式为:类型说明符 (*函数名 )()。 “类型说明符 ”表示返回的指针值指向的数据类型。 30 【正确答案】 D 【试题解析】 本题考核的知识点是指针变量的赋值。本题中定义了一个整型数组a和一个整型指针变量 P。选项 A中将一

26、个整型数赋值给一个指针变量, C语言规定,只能特地址赋给指针指针变量,故选项 A不正确:选项 B 中 a5为一数组元素,同样不是一个地址,故选项 B不正确;选项 c中 a2为一数组元 素,同样是一个整型数据,不是个地址,故选项 C不正确:选项 D中数蛆名 a代表数组首地址加 2,代表第三个元素的地址,故选项 D正确,所以, 4个选项中选项 D符合题意。 31 【正确答案】 D 【试题解析】 指针类型的自定义的形式如下: typedef 类型说明符 *用户类型名。不难看出只有选项 D是正确的定义形式。所以, D选项为所选。 32 【正确答案】 A 33 【正确答案】 C 34 【正确答案】 D

27、【试题解析】 变量的存储类别具体包含四种:自动的 (auto),静态的 (static),寄存 器的 (register),外部的 (extern)。 35 【正确答案】 C 【试题解析】 题中通过二维数组的行、列下标来定位元素的位置从而实现元素的引用。注意:二维数组和数组元素的址。 36 【正确答案】 A 37 【正确答案】 A 【试题解析】 主函数中定义一个长度为 10的整型数组并赋初值,接着执行一个for循环,该循环共执行了 3次。当 i=2 时,调用函数 sum(&aa2),主函数中将&aa2作为实参传给行参 a,所以此时形参 a所指的数组第一个元素和第二个元素分别为 aa2和 aa3

28、,故执行完该函数后将 aa3的值赋给 aa2,即aa2=aa3=4,当 i=1时,调用函数 sam(&aa1),主函数中将 &aa1作为实参传给行参 a,所以此时形参 a所指的数组第一个元素和第二个元素分别为 aa1和aa2,故执行完该函数后将 aa2的值赋给 aa1,即 aa1=aa2=4:当 i=0时:调用函数 sum(&aa0),主函数中将 &aa0作为实参传给行参 a,所以此时形参 a所指的数组第一个元素和第二个元素分别为 aa0和 aa1,故执行完该函数后将aa1的值赋给 aa0,即 “aa0=aa1=4; ”最后输出的 aa0的值为 4,所以, 4个选项中选项 A符合题意。 38

29、【正确答案】 B 【试题解析】 主函数中定义了一个字符数组 s并赋初值,一个字符串指针变量 ps并让它指向 s。程序中 p+4的地址为数组第 5个元素的地址,而调用 put(str_adr)函数时,将从 str_adr这一地址开始,依次输出存储单元中的字符,遇到第一个 0时结束输出,并自动输出一个换行符。所以 put(p+4)将输出 n/No, put(s)将从 s第一个元素开始输出到第 3个元素结束 (因为执行 *(p+4)=0语句后 s中的第 5个元素的值为 0,而 s中的第 4个元素为 , puts将遇到 0,结束输出 ),即输出 yes。所以, 4个选项中选项 B符合题意。 39 【正

30、确答案】 B 【试题解析】 (a1,a2)是一个逗号表达式,它的值为 a2的值即 m,以字符格式输出表达式的值即输出小写字母 m。 40 【正确答案】 B 【试题解析】 本题主要考查结构指针: p=&st,访问结构体的成员,可以通过结构变量访问,即 st.i,也可以用等价的指针形式即 (*p).i和 p- i。 41 【正确答案】 A 【试题解析】 因为在头文件 stdio h 中,已对 NULL 作了宏定义,其值为 0。 42 【正确答案】 需求规格说明书 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果 ,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验

31、证性、一致性、可理解性、可修改性和可追踪性等。 43 【正确答案】 变换型 【试题解析】 典型的数据流类型有两种:变换型和事务型。 44 【正确答案】 前后件关系 【试题解析】 在数据存储结构中,除了要存 储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。 45 【正确答案】 类 【试题解析】 在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。 46 【正确答案】 功能性 47 【正确答案】 关系 【试题解析】 模型是用二维表的形式来表示实

32、体和实体间联系的数据模型。从用户观点来看,关系的逻辑结构是一个二维表,在磁盘上以文件形式存储。 一个关系就是一张二维表。 48 【正确答案】 1,2,3,0,0,1,2,3,0,0, 【试题解析】 本题考查文件读写函数 fread 和 fwrite的用法。 fwrite函数将数组a的前 5个元素输出到文件 fp中两次,共 10个字节,再调用 fread 函数从文件 fp中读取这 10个字节的数据到数组 a中,此时数组 a的内容就变为1,2,3,0,0,1,2,3,0,0,最后的输出结果为 “1,2,3,0,0,1,2,3,0,0”。 49 【正确答案】 252H 【试题解析】 要解答本题,首先

33、要明白在对指 针进行加、减运算时,数字 “1”不是 +进制数的 “1”,而是指 “1”个存储单元长度。 1个存储单元长度占存储空间的多少,应该视具体情况而定,如果存储单元的基类型是血型,则移动 1个存储单元的长度就是位移 2个字节;如果存储单元基类型是 float型,则移动 1个存储单元的长度就是位移 4个字节。所以 p+13所指向的数组元素的地址为:200H+(13*4)H=252H。 50 【正确答案】 150 【试题解析】 本题先给变量 x赋初始值 100,然后将指针 p 指向变量 x, *p是取指针 p所指地址的内容,即 100,所以 x=100+50=150。 51 【正确答案】 4

34、33 4 【试题解析】 程序将变量 a, b 的值传给函数 swap的形参 x, y,并在函数中对x, y的值进行交换,所以在函数 swap 中输出 x, y的值 4, 3,由于 c程序的函数是僧传递,实参 a, b的值不会随形参 x, y的改变而改变,所以在主函数中输出的 a, b的值为 3, 4。 52 【正确答案】 4, 8 4, 4 53 【正确答案】 7 9 【试题解析】 因为在调用子函数时进行的是数值传递,调用于函数并不能改变实参的值,所以经过调用子函数, c、 d 的 值并没有发生变化还是原来的值。 54 【正确答案】 float y; struct stu * 【试题解析】 f

35、loat定义变量 y为实型变量。要求变量 next是指向自身结构体的指针,因此变量 next应该是结构体 stu 的指针型变量。 55 【正确答案】 length+ i length 【试题解析】 第一个循环极有可能是计算串的长度,在 i =length时字符才被删除,被删除的是从第 i个到第 i+n或最后一个间的所有字符。删除前,应判断 i=length。由于已经进行了 -i运算,故实际 应填入 i length。 56 【正确答案】 str+strlen(str)-1 i strlen(str)/2 huiwen(str) 【试题解析】 首先使指针 p1指向字符串的首地址,指针 p2指向字符串的尾地址(不包括字符串结束标记 0),然后指针 p1从前往后,指针 p2从后往前,直到移至字符串的中间元素,若两者所指的元素不相等,则跳出循环,此时 istrlen(str)/2,若两者所指的元素均相等,则此时 i strlen(str)/2。 通过 if 语句判断,如果 i strlen(str)/2,则返回 “yes!”,否则返回 “no!”。 主函数中要求输出函数 huiwen(str)的返回值。 57 【正确答案】 i-1

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

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

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