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

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

1、国家二级( C语言)笔试模拟试卷 3及答案与解析 1 下列选项中不属于结构化程序设计方法的是 ( )。 ( A)自顶向下 ( B)逐步求精 ( C)模块化 ( D)可复用 2 在结构化程序设计中,模块划分的原则是 ( )。 ( A)各模块应包括尽量多的功能 ( B)各模块的规模应尽量大 ( C)各模块之间的联系应尽量紧密 ( D)模块内具有高内聚度、模块间具有低耦合度 3 一棵二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数为 ( )。 ( A) 221 ( B) 219 ( C) 231 ( D) 229 4 下面选项中不属于面向对象程序设计特征的是 ( )。 (

2、 A)继承性 ( B)多态性 ( C)类比性 ( D)封装性 5 下列叙述中正确的是 ( )。 ( A)在面向对象的程序设计中,各个对象之间具有密切的联系 ( B)在面向对象的程序设计中,各个对象都是公用的 ( C)在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 ( D)上述 3种说法都不对 6 设有如下 3个关系表: 下列操作中正确的是 ( )。 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 7 某二叉树中有 n个度为 2的结点,则该二叉树中的叶子结点数为 ( )。 ( A) n+1 ( B) n-1 ( C) 2n ( D) n/2 8 在

3、关系数据库中,用来表示实体之间联系的是 ( )。 ( A)树结构 ( B)网结构 ( C)线性表 ( D)二维表 9 数据库技术的根本目标是要解决数据的 ( )。 ( A)存储问题 ( B)共享问题 ( C)安全问题 ( D)保护问题 10 下列叙述中错误的是 ( )。 ( A)在数据库系统中,数据的 物理结构必须与逻辑结构一致 ( B)数据库技术的根本目标是要解决数据的共享问题 ( C)数据库设计是指在已有数据库管理系统的基础上建立数据库 ( D)数据库系统需要操作系统的支持 11 C语言源程序名的后缀是 ( )。 ( A) .exe ( B) .c ( C) .obj ( D) .cp 1

4、2 以下选项中合法的实型常数是 ( )。 ( A) 5E2.0 ( B) E-3 ( C) 2E0 ( D) 1.3E 13 以下程序输出的结果是 ( )。 #include stdio.h main() int i=010,j=10; printf(“%d,%dn:,+i,j-); ( A) 11,10 ( B) 9,10 ( C) 010,9 ( D) 10,9 14 有以下程序: main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1fn“,a,c,f,x);

5、程序运行后的输出结果是 ( )。 ( A) 1 65 1 6.5 ( B) 1 65 1.5 6.5 ( C) 1 65 1.0 6.5 ( D) 2 65 1.5 6.5 15 有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是 ( )。 ( A) a=a+b=b+ ( B) w%(int)a+b) ( C) (c+w)%(int)a ( D) w=a=b 16 有以下程序: main() int a=1,b=2,m=0,n=0,k; k=(n=b a)|(m=a b); printf(“%d,%dn“,k,m); 程序运行

6、后的输出结果是 ( )。 ( A) 0,0 ( B) 0,1 ( C) 1,0 ( D) 1,1 17 以下叙述中错误的是 ( )。 ( A) C语言中对二进制文件的访问速度比文本文件快 ( B) C语言中,随机文件以二进制代码形式存储数据 ( C)语句 FILE fp;定义了一个名为 fp的文件指针 ( D) C语言中的文本文件以 ASCII码形式存储数据 18 以下 4个程序中,完全正确的是 ( )。 ( A) #include stdio.h main(); /* programming */ printf(“programming!n“); ( B) #include stdio.h

7、main() /*/ programming /*/ printf(“programming!n“); ( C) #include stdio.h main() /*/* programming */*/ printf(“programming!n“); ( D) #include stdio.h main() /* programming */ printf(“programming!n“); 19 有以下程序,其中 %u表示按无符号整数输出: main() unsigned int x=0xFFFF; /*x的初值为十六进制数 */ printf(“%un“,x); 程序运行后的输出结果是

8、 ( )。 ( A) -1 ( B) 65535 ( C) 32767 ( D) 0xFFFF 20 若有说明语句: int a,b,c,*d=,则能正确从键盘读入 3个整数分别赋给变量a、 b、 c的语句是 ( )。 ( A) scanf(“%d%d%d“, ( B) scanf(“%d%d%d“, ( C) scanf(“%d%d%d“,a,b,d); ( D) scanf(“%d%d%d“,a,b,*d); 21 下列函数定义中,会出现编译错误的是 _。 ( A) max(int x, int y, int *z) *z=x y ? x:y; z=x y ? x:y; ( B) int

9、max(int x,y) int z; return z; ( C) max(int x,int y) int z; z=x y? x:y; return(z); ( D) int max(int x, int y) return x y ? x:y; 22 有如下程序 main() int x=3; do printf(“%d“,x-); while(!x); 该程序的执行结果是 _。 ( A) 321 ( B) 3 ( C)不输出任何内容 ( D)陷入死循环 23 有以下程序段: main() int a=5,*b,*c; c=b=b=语句后,表达式 *c的值是 _。 ( A)变量 a的地

10、址 ( B)变量 b中的地址 ( C)变量 a中的值 ( D)变量 b的地址 24 有如下程序 main() char s5=“abc“,“de“,“fgh“; printf(“%c“,s26); 其输出为 _。 ( A)不确定 ( B)编译错误 ( C) g ( D)输出 null字符 25 有以下程序: int*f(int*x,int*y) if(* *y)return x; else return y; main() int a=7,b=8,*p,*q,*r; p=q= r=f(p, q); printf(“%d,%d,%dn“,*p,*q,*r); 程序运行后输出结果是 _。 ( A)

11、 7,8,8 ( B) 7,8,7 ( C) 8,7,7 ( D) 8,7,8 26 有如下程序: long fib(int n) if(n 2) return(fib(n-1)+fib(n-2); else return(2); main() printf(“%ldn“,fib(3); 该程序的输出结果是 _。 ( A) 2 ( B) 4 ( C) 6 ( D) 8 27 下面程序的输出结果是 _。 main() char str10,c=a; int i=0; for(;i 5;i+) Stri=c+; printf(“%s“,str); ( A) abcde ( B) a ( C)不确定

12、 ( D) bcdef 28 有如下程序: #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 29 有如下程序段: #include stdio.h #define Max(a,b) a b?a:b main() int a=5,b=6,c=4,d; d=c+Max(a,b) ; printf(“%d“,d) ; 其输出结果为_。 ( A) 10 ( B) 5 (

13、 C) 6 ( D)编译错误 30 下述关于 C语言文件的操作的结论中,正确的是 _。 ( A)对文件操作必须先关闭文件 ( B)对文件操作必须先打开文件 ( C)对文件操作顺序无要求 ( D)对文件操作前必须先测文件是否存在,然后再打开 文件 31 有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9的表达式是_。 ( A) *p+9 ( B) *(p+8) ( C) *p+=9 ( D) p+8 32 若有以下定义: int t32;,能正确表示 t数组元素地址的表达式是 _。 ( A) printf(“%dn“,t); ( A) 5 ( B)

14、6 ( C) 7 ( D) 8 34 有如下程序: main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3; i+) for(j=0;j =i;j+) s+=aij; printf(“%dn“,s); 该程序的输出结果是 _。 ( A) 18 ( B) 19 ( C) 20 ( D) 21 35 若已建立如下图所示的单向链表结构:在该链表结构中,指针 p、 s分别指向图中所示结点,则不能将 s所指的结点插入到链表末尾仍构成单向链表的语句组是_。 ( A) p=p- next;s- next=p;p- next=s; ( B) p=p- next;s- ne

15、xt=p- next;p- next=s; ( C) s- next=NULL; p=p- next; p- next=S; ( D) p=(*p).next; (*S) next=(*p).next; (*p).next=s; 36 对于长度为 n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【 】。 37 注释说明了程序的功能,它分为【 】注释和功能性注释。 38 软件测试中路径覆盖测试是整个测试的基础,它是对软件【 】进行测试。 39 数据库技术的主要特点为数据的集成性、数据的高【 】和低冗余性、数据独立性和数据统一管理与控。 40 数据元素之间【 】的整体称为逻

16、辑结构。 41 下列程序用来输出结构体变量 ex所占存储单元的字节数。 struct st char name20; double score; ; main () struct st ex; printf(“ex size: %dn“,sizeof(【 】 ); 42 下列程序的运行结果为【 】。 main () int i=lO,*p,*func(); p= printf(“%d “,*p); p=func (p); printf ( “%dn“, *p) int *func(px); int *px; int temp=20; px= return (px); 43 下列程序用来将从键盘

17、上输入的 2个字符串进行比较,然后输出 2个字符串中第 1个不相同字符的 ASCII码之差。例如,输入的 2个字符串分别为 abcdef和abceef,则输出为 -1。 #include main () char str 100, str2 100, c; int i,s; printf(“n input string 1:n“); gest(str1); printf(“n input string 2:n“); gest(str2); i=0; while(strli=str2i s=【 】 ; printf(.%dn“,s); 44 由 25人围坐成圆圈,先由任意一人开始顺时针沿用 1

18、25依次编号,然后从 1号开始顺时针报数 (1、 2、 3) ,凡报 5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。 #include main ( ) int a26, j,n, count; for (j=1; j =25; j+) aj=j; j=1;count=0;n=【 】 ; do if(aj !=0) n+; if (n%5=0) 【 】 ; if(count=24) printf(“%dn“,j); count+; j+; if (j 25) j=1; while(【 】 ); 45 下列程序可以判断输入的年份是不是闰年。 #include main() int 【 】

19、 ,leap; scanf(“%d“, if(year%4) leap=0; else if(year%lO0) 【 】 ; else if(year%400) leap=0; else leap=1; if(【 】 ) printf(“%d年是闰年 “,year); else printf (“ %d年不是闰年 n“, year); 国家二级( C语言)笔试模拟试卷 3答案与解析 1 【正确答案】 D 【试题解析】 结构化程序设计方法的主要原则有 4点:自顶向下 (选项 A)、逐步求精 (选项 B)、模块化 (选项 C)、限 制使用 goto语句。没有可复用原则。 2 【正确答案】 D 【试

20、题解析】 模块划分的原则有:模块的功能应该可预测,如果包含的功能太多,则不能体现模块化设计的特点,选项 A错误。模块规模应适中,一个模块的规模不应过大,选项 B错误。改进软件结构,提高模块独立性。通过模块的分解或合并,力求降低耦合提高内聚,所以选项 C错误,选项 D正确。 3 【正确答案】 B 【试题解析】 在任意二叉树中,度为 0的结点 (也就是叶子结点 )总比度为 2的结点多一个。由于本题中的二叉树有 70个叶子结点,所以有 69个度为 2的 结点。该二叉树中总结点数为:度为 2的结点数 +度为 1的结点数 +度为 0的结点数=69+80+70=219。 4 【正确答案】 C 【试题解析】

21、 面向对象方法具有封装性、继承性、多态性几大特点。 5 【正确答案】 C 【试题解析】 在面向对象的程序设计中,对象是面向对象的软件的基本模块。从模块的独立性考虑,对象内部各种元素彼此结合得很紧密,内聚性强。由于完成对象功能所需要的元素 (数据和方法 )基本上都被封装在对象内部,它与外界的联系自然就比较少,所以,对象之间的耦合通常比较松。所以,选项 A与选项 B错误,选项 C正确。 6 【正确答案】 C 【试题解析】 R表中只有一个域名 A,有两个记录,分别是 m和 n; S表中有两个域名,分别是 B和 C,其所对应的记录分别为 1和 3。表 T是由 R的第一个记录依次与 S的所有记录组合,然

22、后再由 R的第二个记录与 S的所有记录组合,形成的个新表。上述运算符合关系代数的笛卡尔积运算规则。关系代数中,笛卡尔积运算用 “”来 -表示。因此,上述运算可以表示为 T=RS。 7 【正确答案】 A 【试题解析】 对任意一棵二叉树,若终端结点 (即叶子结点 )数为 n0,而其度数为2的结 点数为 n2,则 n0=n2+1。由此可知,若二叉树中有 n个度为 2的结点,则该二叉树中的叶子结点数为 n+1。 8 【正确答案】 D 【试题解析】 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。即关系模型是用二维表格数据来表示实体本身及其相互之间的联系。 9 【正确答案】 B 【试题解析

23、】 数据库产生的背景就是计算机的应用范围越来越广泛,数据量急剧增加,对数据共享的要求越来越高。数据库技术的根本目标就是解决数据的共享问题。 10 【正确答案】 A 【试题解析】 数据的 逻辑结构是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。选项 A的说法是错误的。 11 【正确答案】 B 【试题解析】 C语言源程序的后缀为 .c;经过编译得到的目标程序文件的后缀为 .obj;再将目标程序文件链接后得到可执行文件的后缀为 .exe。故本题应该选择B。 12 【正确答案

24、】 C 【试题解析】 在 C语言中,实数有两种表示形式:十进制数形式与指数形式。选项 A中 , 5E2.0中 E后面的 2.0不是整数;选项 B中, E前面没有数字:选项 D中, E后面没有数字。最终可以判断选项 C正确。 13 【正确答案】 B 【试题解析】 程序中 i的值用八进制表示 (十进制为 8), +i是在变量使用前自身先加 1,而 j-是在变量使用后自身减 1。所以, 4个选项中 B符合题意。 14 【正确答案】 B 【试题解析】 主函数中先定义了个整型变量 a,一个字符变量 c并赋初值 10,一个浮点型变量 f并赋初值 100.00和一个 double犁 x,接着执行 “a=f/

25、=c*=(x=6.5)”,该语 句从右向左计算,先把 6.5赋值给 x(该括号表达式的值也为 6.5),此时 x的值的变为 6.5,然后执行 “c*=(x=26.5)”相当于执行 “c=c*(x=6.5)”,此时 c的值为 65,接着向左执行 “f/=c*=(x=6.5)”,语句相当于执行 “f=f/c”接着向最右边执行 “a=f”,由于 a是整型变量,所以 a最后去 f的整数部分为 1。程序最后输出的 a、 c、 f和 x的值分别为 1、 65、 1.5、 6.5。所以, 4个选项中选项 B符合题意。 15 【正确答案】 C 【试题解析】 选项 A中不是合法的赋值语句,将最右边 的第一个赋值

26、表达式加括号即为 a=b+(b=b+)才正确,故选项 A不正确;选项 B中运算符 “%”的对象必须是整型,而在选项 B中 (int)a+b为 double型,故选项 B不正确;选项 a, b都为double“=”应该改为 “=”,故选项 D不正确。所以, 4个选项中选项 C符合题意。 16 【正确答案】 C 【试题解析】 在 “|”运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中, “|”左边的表达式 k=(n=b a), “2 1”为真,所以 n被赋值为 1,接着k被赋值 1,即 “|”运算符左边表达式为真 ,此时不再计算 “|”右边的表达式,因此m的值没有被改变仍为 0,最后的

27、输出结果 1,0。所以, 4个选项中选项 C符合题意。 17 【正确答案】 C 【试题解析】 定义文件类型指针变量的一般形式为: FILE *指针变量名; 因此选项 C是错误的,应该选择 C。 18 【正确答案】 B 【试题解析】 选项 A在定义 main()函数时,函数头后面多了一个分号,故选项A不正确; C语言中的注释是不能嵌套的,故选项 C不正确:选项 D在使用预编译指令 #include时漏掉了 #号,所以也是错误的。故 应该选择 B。 19 【正确答案】 B 【试题解析】 整型常量有十进制、八进制和十六进制 3种表示:十进制整数以正号 (+)或负号 (-)开头,由首位非 0的一串十进

28、制数字组成,正负号也可省略,表示正整数;八进制整数以数字 0开头,后面接着干个八进制数字 (0 7):十六进制整数以数字。和字母 x(大、小写均可 )开头,后面接若干个十六进制数字 (数字 0 9和字母 A F,大、小写均可 )。故本题是以无符号整数形式输出一个十六进制整数 FFFF,将其转换为十进制就是 65535,故本题应该选择 B。 20 【正确答案】 A 【试题解析】 选项 B中 d已经为地址,不应在加上求地址符号 “&”,故选项 B不正确;选项 C中, a和 b都为变量不是地址,应该在 a和 b之前加上求地址符号“&”,故选项 C不正确:选项 D中指针 d所指向的存储空间的位置为变量

29、 c的值,不为地址,故选项 D不正确,所以, 4个选项中 A为所选。 21 【正确答案】 B 【试题解析】 在 C语言中,不可以在函数的参数声明列表中用一个类型名指定多个参数。故选项 B是错误的。其正确的表示方式应为: int max(int x,int y) 或 int max (: 1 int x,y; ) 22 【正确答案】 B 【试题解析】 本题 x赋初值为 3,当执行 printf(“%d“,x-);时,由于 x-的作用是先运算 x,再将 x的值减 1,所以, printf输出的 x值为 3,等输出后, x的值减 1变为 2,继续执行,判断条件 !x为假,循环只被执行一次。 23 【

30、正确答案】 C 【试题解析】 指针变量是用来存放地址的。 &:取地址运算符。 *:指针运算符。 *c为指针变量 *c 所指向的存储单元, *c为指针指针变量 c所指向的存储单元,而 c=&b表示 c为变量 b的地址, b=&a表示 b为变量 a的地址。表边式 *c的值就是变量 a中的值。 24 【正确答案】 A 【试题解析】 由于 s26表示字符串已超出了数组 s的表示范围,在 C中不会对数组越界进行检查,当数组越界时,会得到一个不确定的值。 25 【正确答案】 B 【试题解析】 f函数的功能是返回地址为 x,y的两个数中值较的数的地址,本题输出结果是 7,8,7。 26 【正确答案】 B 【

31、试题解析】 函数 fib内部有两个递归调用,当 n=3时, fib(n-1)返回 2, fib(n-2)出返回 2,所以 fib(n-1)+fib(n-2)的值为 4。 27 【正确答案】 C 【试题解析】 字符串少一个结束标志,所以输出的结果不确定。 28 【正确答案】 B 【试题解析】 在 C语言中,宏定义在编译时将被直接替换,所以 NUM最后会被替换成 2*N+1+1,即 2*2+1+1,值为 6。因此, for循环执行的次数为 6。 29 【正确答案】 B 【试题解析】 在 C语言中,宏定义是直接替换的,所以在 c+a b?a:b这个条件表达式中, c+a b为真,所以用 a的值作为整

32、个 表达式的值,而 a的值为 5,所以整个表达式的值为 5。 30 【正确答案】 B 【试题解析】 在 C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在 C中打开文件前不必对其检查文件是否存在,故答案为B。 31 【正确答案】 B 【试题解析】 p是指针, p+8是地址值, D是错的: *p是 p的目标变量,即a0,值为 1,所以 *p+9的值 是 10,而 *p+=9值是重新给 a0赋了值 (1+9);所以A和 C也是错的。

33、p+8是地址值,指向 a8,那么 *(9+8)的值就是 a8的值,即9。 32 【正确答案】 C 【试题解析】 A和 B两个表达式都已越界了; *t2是目标变量,即一个整数,而不是地址值。 33 【正确答案】 B 【试题解析】 在 main函数中定义了一个 struct abc类型的数组,同时分别利用12, 3及 4, 5,6对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故 s0.a=1, s1.b=5,所以本题输出为 6。 34 【正确答案】 A 【试题解析】 题中的外循环只执行了 2次: 第 1次: a10=3, a11=4,所以 s=7; 第 2次:

34、a20=5, a21=6, a22=0,所以 s=7+5+6+0=18。 35 【正确答案】 A 【试题解析】 在答案 A中: p=p- next; s- next=p; p- next=s; s的确已插到了链表的末尾,但它的 next却并没有为 NULL,而是指向了它的直接前趋 p,这样它就不是一 个单向链表 (单向链表最后一个结点的 next指针一定是一个NULL)。 36 【正确答案】 n/2 【试题解析】 删除一个元素,平均移动的元素个数为 (n-1+n-2+0)/n=(n -1)/2;插入一个元素,平均移动元素个数为 (n+n-1+n-2+ +1)/n=(n+1)/2 ;所以总体平均

35、移动元素个数为 n/2。 37 【正确答案】 序言性 【试题解析】 注释一般分为序言性注释和功能性注释。 38 【正确答案】 结构 【试题解析】 路径测试是白盒测试方法中的一种,它要求对程序中 的每条路径最少检查一次,目的是刑软件的结构进行测试。 39 【正确答案】 共享性 【试题解析】 数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。 40 【正确答案】 逻辑关系 【试题解析】 数据元素之间逻辑关系的整体称为逻辑结构。数据的逻辑结构就是数据的组织形式。 41 【正确答案】 ex或 struct st 42 【正确答案】 10 20 43 【正确答案】 0 strli-str2i 44 【 正确答案】 0 aj=0 count 25 45 【正确答案】 year leap=1 leap

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

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

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