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

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

1、国家二级( C语言)笔试模拟试卷 216 及答案与解析 1 将 E-R图转换到关系模式时,实体与联系都可以表示成 ( A)属性 ( B)关系 ( C)键 ( D)域 2 简单的交换排序方法是 ( )。 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 3 以下程序执行后 sum的值是 ( )。 main() int i, sum; for(i=1; i 26; i+)sum+=i; printf(“ d n“, sum); ( A) 15 ( B) 14 ( C)不确定 ( D) 0 4 对长度为 n的线性表排序 ,在最坏情况下 ,比较次数不是 n(n-1)/2的排序方法是

2、 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 5 按照 “后进先出 ”原则组织数据的数据结构是 ( )。 ( A)队列 ( B)栈 ( C)双向链表 ( D)二叉树 6 下列程序 (注意: ch0在低字节, ch1在高字节 )的输出结果是 _。 #include stdio.h union pw int i; char ch2; a; main () a.ch0=13; a.ch1=0; printf(“%dn“, a i); ( A) 13 ( B) 14 ( C) 208 ( D) 209 7 索引属于 ( A)模式 ( B)内模式 ( C)外模式 ( D)概

3、念模式 8 在计算机中,算法是指 _ 。 ( A)查询方法 ( B)加工方法 ( C)解题方案的准确而完整的描述 ( D)排序方法 9 与十进制数 255相等和二进制数是 ( ) ( A) 11101110 ( B) 11111110 ( C) 10000000 ( D) 11111111 10 设计程序时,应采纳的原则之一是 ( )。 ( A)程序的结构应有助于读者的理解 ( B)限制 GOTO语句的使用 ( C)减少或取消注释行 ( D)程序越短越好 11 已知 int a=2, b=3;则执行表达式 a=a b后,变量 a的值为 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D

4、) 3 12 设有以下语句,其中不是对 a数组元素的正确引用的是: _(其中 0i0) inta10=O,12,3,4,5,6,7,8,9,*p=a; ( A) ap-a ( B) *( ( B) static int a5=1,1,1; ( C) static int a=1,1,1,0,0; ( D) static int a5=1*2,0*3; 17 下列常数中,不合法的 C常量是 ( ) ( A) -0x3b1 ( B) 123e+2.3 ( C) ( D) 6e+7 18 有以下定义语句 double a, b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表

5、达式是 ( A) a=a+b=b+ ( B) w%(int)a+b) ( C) (c+w)%(int)a ( D) w=a=b; 19 在位运算中,操作数每右移一位,其结果相当于 ( ) ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以 16 ( D)操作数乘以 16 20 下列叙述错误的是 _。 ( A)一个 C语言程序只能实现 种算法 ( B) C程序可以由多个程序文件组成 ( C) C程序可以由 个或 多个函数组成 ( D)一个 C函数可以单独作为 个 C程序文件存在 21 有以下程序段 #include main() while(getchar()!= n); 以下叙

6、述中正确的是 ( A)此 while语句将无限循环 ( B) getchar()不可以出现在 while语句的条件表达式中 ( C) 当执行此 while语句时,只有按回车键程序才能继续执行 ( D)当执行此 while语句时,按任意键程序就能继续执行 22 下面程序段中 c的二进制值是 _。 char a=3,b=6,c; c=ab 1; ( A) 1011 ( B) 1111 ( C) 11110 ( D) 11100 23 若有如下说明,且 int类型占两个字节,则正确的叙述为 ( )。 struct st int a; int b2; a; ( A)结构体变量 a与结构体成员 a同名,

7、定义是合法的 ( B)程序只在执行到该结构体时才为结构体 st分配存储单元 ( C)程序运行时为结 构体 st分配 8字节存储单元 ( D)类型名 struct st可以通过 extern关键字提前引用 24 下列程序的运行结果是 ( )。 #inClude stdio.h main() static char a=“Languagef“,b=“programe“; Char*p1,*p2;int k; p1=a;p2=b; for(0;k=8;k+) if(*p1+k)=*(p2+k)printf(“%c“,*(p1+k); ( A) gae ( B) ang ( C) program (

8、D)有语法错 25 下列程序的输出结果是 ( )。 #include stdio.h main() struct st int y,x,z; ; union long i; int j; char k; un; printf(“%d,%dn“,sizeof(struct st),sizeof(un); ( A) 6,2 ( B) 6,4 ( C) 8,4 ( D) 8,6 26 有以下程序 :#include stdio.h main( ) char a,b,e,d; seanf(“% e,% e,% d,% d“ , printf(“% c,% c,% e,% c n“ ,a,b,c,d);

9、若运行时从键盘上输入 :6,5,65,66 回车,则输出结果是 ( )。 ( A) 6,5,A,B ( B) 6,5,65,66 ( C) 6,5,6,5 ( D) 6,5,6,6 27 以下程序的功能是进行位运算 main() unsigned char a,b; a=73;b=4 printf(“%d%dn“,a,b); 程序运行后的输出结果是 ( A) 4 3 ( B) 7 3 ( C) 7 0 ( D) 4 0 28 有以下程序 : #include stdio. h main( ) unsigned int a; int b=-1; a=b; printf(“ % u“, a);程序

10、运行后的输出结果是 ( )。 ( A) -1 ( B) 65535 ( C) 32767 ( D) -32768 29 有如下程序: #define n 2 #define m N+1 #define NUM 2*m+1 main() int i; for(i=1;i =NUM;i+)printf(“%dn“,i); 该程序中的 for循环执行的次数是 _。 ( A) 5 ( B) 6 ( C) 7 ( D) 8 30 设 a=5, bc6, c=7, d=8, m=2, n=2,执行 (m=a b) k=5; for(i=0;i 10;i+) ai=i; for(i=0;i 3;i+) pi

11、=ai*(i+1); for(i=0;i 3;i+) k+=pi*2; printf(“%dn“,k); ( A) 20 ( B) 21 ( C) 22 ( D) 23 32 变量 a所占的内存字节数是 _。 union U char st4; int i; long 1; ; struct A int c; union U u; a; ( A) 4 ( B) 5 ( C) 6 ( D) 8 33 设有定义: int a, *p main() int a=3,b=6,*x= ( A) 6 3 ( B) 3 6 ( C)编译出错 ( D) 0 35 下面程序运行后的输出结果是 _。 struct

12、 abc int a,b,c; main() struct abc s2=1, 2, 3, 4, 5, 6; int t=s0.a+s1.b; printf(“%dn“,t); ( A) 5 ( B) 6 ( C) 7 ( D) 8 36 有以下程序 main() int k=4, n=0; for(;n k;) n+; if(n%3!=0)continue; K-; printf(“%d,%dn“,k,n); 程序运行后的输出结果是 ( A) 1, 1 ( B) 2, 2 ( C) 3, 3 ( D) 4, 4 37 下列程序的输出结果是 ( )。 int f1(int x,int y)re

13、turn x y?x:y; int f2(int x,int y)return x y?y:x; main() int a=4,b=3,e=5,d=2,e,f,g; e=f2(f1(a,b),f1(e,d); f=f1(f2(a,b),f2(e,d); g=a+b+c+d-e-f; printf(“%d,%d,%dn“,e,f,g); ( A) 4,3,7 ( B) 3,4,7 ( C) 5,2,7 ( D) 2,5,7 38 设 char型变量 x中的值为 10100111,则表达式 (2+x) (3)的值是 ( A) 10101001 ( B) 10101000 ( C) 11111101

14、 ( D) 1010101 39 有以下程序 #include stdio.h main() FILE *fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d3.dat“,“w+b“); fwrite(a.sizeof(int), 6, fp); fseek(fp,sizeof(int)*3, SEEK_SET): /*该语句使读文件的位置指针从文件头向后移动 3个int型数据 */ fread(a, sizeof(int), 3, fp); fclose(fp); for(i=0; i 6; i+)printf(“%d, “, ai); 程序运行后的输出结果

15、是 ( A) 4, 5, 6, 4, 5, 6, ( B) 1, 2, 3, 4, 5, 6, ( C) 4, 5, 6, 1, 2, 3, ( D) 6, 5, 4, 3, 2, 1, 40 有以下程序 #include main( ) int a=2, 3, 5, 4, i; for(i=0; i #deFine SUB(a) (a) (a) main() int a=2,B=3,c=5,d; d=SUB(a+B)*c; printF(”%dn”,d); 程序运行后的输山结果是 ( A) 0 ( B) -12 ( C) -20 ( D) 10 42 排序是计算机程序设计中的一种重要操作,常

16、见的排序方法有插入排序、_和选择排序。 43 测试用例包括输入值集和 ( )值集。 44 对于长度为 n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【 】。 45 下列程序的运行 结果为【 】。 #include stdio.h main() static char str140; char str2140; strcpy(str2,“China“); strcat(str1,str2); strcat(str1,“ is a great country !“); printf(“%s %s “,str2,strl); printf(“%d %dn“,strlen(s

17、tr2),strlen(str1); 46 软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【 】的设计来实现。 47 以下程序的功能是:通过函数 func输入字符并统计输入字符的个数。输入时用字符 作为输入结束标志。请填空。 #include long_; *函数说明语句 * main() long n; n=func(); printf(“n= ldha”,n); longfunc() long m; for(m=0; getchar()!=; _); return m; 48 以下程序的功能是计算: s=1+12+123+1234+12345。请填空。

18、main() int t=0,s=0,i; for(i=1;i =5;i+) t=i+【 】 ;s=s+t; printf(“s=%dn“,s); 49 阅读下面程序,则执行后的输出结果是【 】。 #include “stdio.h“ main() int x, y, z; x=1; y=2; z=3; if(x y)if(x z)printf(“%d“, x); else printf(“%d“, y); printf(“%dn“, z); 50 软件产品从提出、实现、使用维护到停止使用退役的过程称为 ( )。 51 下列程序的运行结果是 _。 main() int a=1, b=10; d

19、o b-=a; a+while(b- 0); printf(“ d, d n“, a, b); 52 以下程序的输出结果是【 】。 #include stdio.h void fun() static int a=0; a + =2; printf(“%d“,a); main() int cc; for(cc = 1;cc 4; cc+) fun(); printf(“n“); 53 以下程序的输出结果是【 】。 main() int a=1,b=2; a=a+b;b=a-b;a=a-b; printf(“%d,%dn“,a,b); 54 以下程序运行后的输出结果是【 】。 void fun(

20、int X,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main() int x=2,y=3; fun(x,y); printf(“%d,%dn“,x,y); 55 若有以下程序 main() int p,a=5; if(p=a!=0) printf(“%dn“,p); else pfintf(“%dn“,p+2); 执行后输出结果是【 】。 56 若 x为 int类型,请写出与 !x 等价的 C语言表达式 _。 57 若有以下程序 main() int a44=1,2,-3,-4,0,-12,-13,14 ,-21,23,0,-24,-31

21、,32,-33,0; int i,j,s=0; for(i=0;i4;i+) for(j=0;j4;j+) if(aij0) continue; if(aij=0) break; s+=aij; printf(“%dn“,s); 执行后输出结果是【 】。 国家二级( C语言)笔试模拟试 卷 216 答案与解析 1 【正确答案】 B 【试题解析】 关系数据库逻辑设计的主要工作是将 E-R图转换成指定 RDBMS中的关系模式。首先,从 E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系, E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。 2 【正确答案】 D 【试题解析

22、】 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。 3 【正 确答案】 C 【试题解析】 sum+=i 等价于 sum i,在本题中 sum没有赋初值,而题中只输出sum的值,固此整个结果为不确定值。 4 【正确答案】 D 【试题解析】 在最坏情况下 ,快速排序、冒泡排序和直接插入排序需要的比较次数都为 n(n-1)/2,堆排序需要的比较次数为 nlog2n。 5 【正确答案】 B 【试题解析】 栈只允许在表的一端进行插入或删除操作,是一种 “后进先出 ”线性表;而队

23、列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”线性表。 6 【 正确答案】 A 7 【正确答案】 B 【试题解析】 内模式 (Internal Schema)又称物理模式 (Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash 等存取方式与存取路径。 8 【正确答案】 C 【试题解析】 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。 9 【正确答案】 D 10 【正确答案】 A 【试题解析】 程序设计的风格主要强调程序的 简单、清晰和可理解性

24、,以便读者理解。程序滥用 GOTO语句将使程序流程无规律,可读性差:添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。 11 【正确答案】 B 【试题解析】 先计算关系表达式 a b=2 3为真 (表达式为真时,如果变量为 int型变量则真用 1表示,假用 0表示 ),即 a=1。 12 【正确答案】 D 【试题解析】 观察程序可知, a实际上就是数组 a的首地址,所以 “*(a+i)”表示的就是数组 a中的第 i个元素的值,进而,我们可以知道 *(*(a+i)必然不是对 a数组元素的正确引用。 13 【正确答案】 A 【试题解析】 scanf函数中

25、格式控制后面应为变量地址列表,因此选项 C和选项D都错误,选项 B中 “)和 int f2(int x,int y)return x y?y:x;的定义可知,如果 x y成立,则函数 f1返回 x的值,函数 f2返回 y的值。 所以 f1(a,b)=4,f1(c,d)=5,f2(a,b)=3,f2(c,d)=2 故e=f2(4,5)=4,f=f1(3,2)=3,g=4+3+5+2-4-3=7。 38 【正确答案】 D 39 【正确答案】 A 【试题解析】 首先利用 fwrite函数将数组 a中的数据写到文件中,接着 fseek 函数的功能是读文件的位置,指针从文件头向后移动 3个 int型数据

26、,这时文件位置指针指向的是文件中的第 4个 int数据 “4”。然后 fread 函数将文件 fp 中的后 3个数据 4, 5, 6读到数组 a中,这样就覆盖了数 组中原来的前 3项数据。最后数组中的数据就成了 4, 5, 6, 4, 5, 6,故本题答案为 A)。 40 【正确答案】 C 【试题解析】 第一次循环, i=0, i 2=0, a0 2=0, a0=a0+1=3;第二次循环, i=l, 1 2=1, a1=0;第三次循环, i=2, a2 2=l, a2=a2-1=4;第四次循环, i=3, i 2=1, a3=0。 41 【正确答案】 C 【试题解析】 在此处需要直接替换整个式

27、子, SUB(a+b)*c即为 (a+b)-(a+b)*c,代入 a,b,c的值可得结果为 -20。 42 【正确答案】 交换排序 【试题解析】 所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。 43 【正确答案】 输出 【试题解析】 测试用例是为测试设计的数据,测试用例由测试输入数据和与之对应的预期输出结果两部分组成。测试用例的格式为: (输入值集 ), (输出值集 )。 44 【正确答 案】 n/2 【试题解析】 删除一个

28、元素,平均移动的元素个数为 (n-1+n-2+0)/n=(n -1)/2;插入一个元素,平均移动元素个数为 (n+n-1+n-2+ +1)/n=(n+1)/2 ;所以总体平均移动元素个数为 n/2。 45 【正确答案】 China,China is a great country ! 5 25 46 【正确答案】 测试实例 【试题解析】 进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。 47 【正确答案】 fimc() m+ 【试题解析】 第一空白处,在 c语言中如果子函数在主函数之后定义,就要对其进行说明,说明的形式为: “函数类型名 函数名 ”。所以此处填写 fun

29、c()。 第二空白处,整型变量 m表示输入字符的个数,所以每输入一个字符,变量 m的值就加 1。所以此处填写 m+。 48 【正确答案】 10*t 【试题解析】 t是用来计算 12,123,1234,12345这几个值的,因此应填 10*t。 49 【正确答案】 3 【试题解析】 C语言的语法规定: else子句总是与前面最近的不带 else的 if 相结合。因为 x不大于 y,所以执行 printf(“%dn“, z);语句。 50 【正确答案】 软件生命周期 【试题解析】 软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。 在国家标准 “计算机软件开发规范 ”中,把软件生

30、命周期划分为 8个阶段,即可行性研究与计划、需求分析、概要设计、详细设计、实现、综合测试、确认测试、使用与维护,对每个阶段,都明确规定了该阶段的任务、实施方法、实施步骤和完成标志,其中特别规定了每个阶段需要产生的文档。 51 【正确答案】 2, 8。 【 试题解析】 本题考查 dowhile语句的功能:先执行循环俸,再判断循环条件是否成立,若为真,则重复执行循环体,否则退出循环。程序开始时 a=1,b=10,经过操作 b-=a; a+后 b=9, a=2,判断条件 b- 0不成立,则退出循环,但 b 的菹被减 1,因此结果为 a=2, b=8。 52 【正确答案】 246 【试题解析】 函数

31、fun 中的 a是 static类型的变量,语句 static int a=0;是给 a赋初值 0,并且只初始化一次。由于 a是静态的,所以当 fun函数返回 main 函数时, a值仍然保留在其所分 配的存储空间。函数第一次调用时 a被赋值 2,然后每调用一次增加 2。 53 【正确答案】 2, 1 【试题解析】 本题通过 “a=a+b;b=a-b;a=a-b;”语句序列实现数据交换。 54 【正确答案】 3,2,2,3 【试题解析】 本题主函数中首先定义了整型变量 x和 y,并分别给它们赋初值为2和 3,接着调用 fun()函数, fun()函数把实参 x和 y的值传给形式参数 x和 y,

32、实参和形参不再有联系。在 fun()函数中通过运算使 x和 y的值交换过来,所以 fun()函数中的输出结果是 “3,2”。 fun()函数返回后,主函数中输出的 x和 y依旧是原来的 x和 y,为 “2,3”。所以最后输出为 3,2,2,3。 55 【正确答案】 1 【试题解析】 首先计算 if语句后面的表达式,根据运算符的优先级可知,先算“a!=o”,该值为 1,再把 1赋值给 p,结果为 1(真 ),执行其后的 printf 语句,输出的值为 1。 56 【正确答案】 x=0 【试题解析】 !x 的逻辑意思就是 X为非,即 x=0。 57 【正确答案】 61 【试题解析】 本题双重 for循环的功能是计算数组中所有的数组元素中零之前 的正数的累加和。

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

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

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