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

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

1、国家二级( C语言)笔试模拟试卷 279 及答案与解析 1 对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 2 需求分析阶段的任务是确定 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 3 结构化程序设计主要强调的是 ( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 4 设计程序时,应采纳的原则之一是 ( )。 ( A)程序的结构应有助于读者的理解 ( B)限制 GOTO语句的使用 ( C)减少或取消

2、注释行 ( D)程序越短越好 5 下面选项中不属于面向对象程序设计特征的是 ( )。 ( A)继承性 ( B)多态性 ( C)类比性 ( D)封闭性 6 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)交 ( C)投影 ( D)并 7 下列叙述中 ,不符合良好程序设计风格要求 的是 ( A)程序的效率第一 ,清晰第二 ( B)程序的可读性好 ( C)程序中要有必要的注释 ( D)输入数据前要有提示信息 8 在下列选项中, _不是一个算法一般应该具有的基本特征。 ( A)确定性 ( B)可行性 ( C)无穷性 ( D)拥有足够的情报

3、9 排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为 _。 ( A)希尔排序 ( B)冒泡排序 ( C)插入排序 ( D)选择排序 10 有两个关系 R和 T如下: 则由关系 R得到关系 T的操作是 ( A)选择 ( B)投影 ( C)交 ( D)并 11 设有以下程序段 int X=0, s=0; while(!X!=0)S+=+X; printf(“%d“, s); 则 ( A)运行程序段后输出 0 ( B)运行程序段后输出 1 ( C)程序段中的控制表达式是非法的 ( D)程序段执行无限次 12 对长度为 n的线性表进行顺序查找,在最坏的情况下所需要的比较次数

4、为( )。 ( A) log2n ( B) n/2 ( C) n ( D) n+1 13 判断 char型变量 cl是否为大写字母的正确表达式是 ( A) A=A) scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1);putchar(c2); printf(“%c%cn“,c5,c6); 程序运行后,若从键盘输入 (从第 1列开始 ) 123 CR 45678 CR 则输出结果是 ( )。 ( A) 1267 ( B) 1256 ( C) 1278 ( D) 1245 23 有以下程序: int f (int a) return

5、a%2; main() int s8=1,3,5,2,4,6,i,d=0; for(i=0;f(s i);i+)d+=si; printf(“%dn“,d); 程序运行后的输出结果是 _。 ( A) 9 ( B) 11 ( C) 19 ( D) 21 24 变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反,低 4位不变,所要执行的运算是 ( )。 ( A) ab ( B) a|b ( C) a b ( D) a 4 25 可以在 C语言程序中用做用户标识符的一组标识符是 ( )。 ( A) void 12

6、3 BBN ( B) aa _abc cas ( C) as+b3 -123 If ( D) 6f Do SIG 26 下列程序的输出结果是 ( )。 int f1(int x,inty)return x y?x:y; int f2(int x,inty)return x y?y:x; main() int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,B) ,f1(c,D) ); f=f1(f2(a,B) ,f2(c,D) ); g=a+b+C+d-e-f; phntf(“%d,%d,%dn“,e,f,g); ( A) 4,3,7 ( B) 3,4,7 ( C) 5,2,

7、7 ( D) 2,5,7 27 以下程序运行后,输出结果是 ( )。 #include #define PT 5 5 #define S(x)PT*x*x main() int a=1, b=2; printf(“ 4 1f n“, S(a+b); ( A) 49 5 ( B) 9 5 ( C) 22 0 ( D) 45 0 28 以下叙述中正确的是 ( )。 ( A) break语句只能用于 switch语句体中 ( B) continue语句的作用是使程序的执行流程跳出包含它的所有循环 ( C) break语句只能用在循环体内和 switch语句体内 ( D)在循环体内使用 break语句

8、和 continue语句的作用相同 29 若要定义一个具有 5个元素的整型数组,以下错误的定义语句是 ( )。 ( A) int a5=0; ( B) int b: 0, 0, 0, 0, 0; ( C) int c2+3; ( D) int i=5, di; 30 一个源文件中定义的外部变量的作用域为 _。 ( A)本文件的全部范围 ( B)本程序的全部范围 ( C)本函数的全部范围 ( D)从定义该变量的位置开始至本文件结束 31 有以下程序 :#include stdio. h main( ) int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL

9、; *q=*(p+5); printf(“%d%dn“,*p,*q);程序运行后的输出结果是 ( )。 ( A)运行后报错觉 ( B) 6 6 ( C) 6 11 ( D) 5 10 32 若要说明一个类型名 STP,使得定义语句 STP s;等价于 char *s;,以下选项中正确的是 ( A) typedef STP char *s; ( B) typedef *char STP; ( C) typedef STP *char; ( D) typedef char* STP; 33 以下程序的输出的结果是 ( )。 int x=3; main() int i; for(i=1;i x;i+

10、)incre();incre() staic int x=1; x*=x+1; printf(“ %d“, x); ( A) 33 ( B) 22 ( C) 26 ( D) 25 34 整型变量 X和 Y的值相等,且为非 0值,则以下选项中结果为 0的表达式是_。 ( A) X|Y ( B) X|Y ( C) X char *p1,*p2;int k; p1=a;p2=b; for(k=0;k =8;k+) if(*(p1+k)=*(p2+k)printf(“%c“,*(p1+k); ( A) gae ( B) ang ( C) program ( D)有语法错 39 若有说明 int i,j

11、=2,*p,则能完成 i=j赋值功能的语句是 _。 ( A) i=*p; ( B) *p=* Fun(a,2); For(i=0;i main( ) int a=200,b=010; print(” d dn”,a,b); 51 有以下程序: #include stdio.h main() int t=1,i=5; for(;i =0;i-) t*=i; printf(“%dn“,t); 执行后的输出结果是【 】。 52 以下程序的输出结果是【 】。 void fun() static int a=0; a+=2; printf(“%d“, a) ; main() int cc; for(cc

12、=1; cc 4; cc+)fun(); printf(“n“); 53 下面程序的运行结果是:【 】。 void swap(int *a, int*b) int *t; t=a; a=b; b=t; main() intx=3, y=5, *p= int i,p; for(i=0;i N;i+) scanf(“%f“ scanf(“%f“, for(i=0,p=N;i N;i+) if(x ai) 【 】 ; break; for(i=N-1;【 】 ;i-) ai+1=ai; ap=x; for(i=0;【 】 ;i+) printf(“%8.2f“,ai); if(i%5=0) prin

13、tf(“n“); 56 以下函数 fun用于求两个整数 a和 b的最大公约数。 fun(a,B) int a, b; int i,j,m,n; if(a B) m=a; a=b; 【 】 ; i=a;j=b; while(n= 【 】 )!=0) j=i; i= 【 】 ; return(i); 国家二级( C语言)笔试模拟试卷 279 答案与解析 1 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始, 将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素

14、与表中的所有元素进行比较,因此比较次数为 n。 2 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象 (组织、部门、企业等 ),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。选项 A)软件开发方法是在总体设计阶段需完成的任务;选项 B) 软件开发工具 是在实现阶段需完成的任务;选项 C)软件开发费用是在可行性研究阶段需完成的任务。 3 【正确答案】 B 4 【正确答案】 A 【试题解析】 程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。程序滥用 GOTO语句将使程序流程无规律,可读

15、性差;添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。 5 【正确答案】 C 【试题解析】 面向对象程序设计的特征有以下几点:分类性、继承性、封装性、多态性、模块性等。 6 【正确答案】 A 【试题解析】 结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的 ”很随意 ”的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品

16、的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。 7 【正确答案】 A 【试题解析】 当今主导的程序设计 风格是 “清晰第一 ,效率第二 “的观点。结构化程序设计思想提出之前 ,在程序设计中曾强调程序的效率 ,而在实际应用中 ,人们更注重程序的可理解性。 8 【正确答案】 C 【试题解析】 一个算法,一般应具有以下几个基本特征: 可行性 确定性 有穷性 拥有足够的情报。 9 【正确答案】 A 【试题解析】 希尔排序的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 10 【正确答案】 A 【试题解析】 关系 T中的两行和关系 R中的最后两行一致

17、,通过选择运算即可由 R得到 T。 11 【正确答案】 B 【试题解析】 本题中, “!”表示逻辑非运算符, “! =”表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。 12 【正确答案】 C 【试题解析】 在平均情况下,利用顺序查找法在线性表中查找一个元素,大约要与线性表中一半的元素进行比较,最坏情况下需要比较 n次。 13 【正确答案】 D 【试题解析】 本题考查字母大小写的判断。字符型数据在计算机内部是以 ASCII码存储的 ,英文大写字母和小写字母在 ASCII 码表中都是连续的。大写字母 A到 Z是从 65到 90,所以 只要变量 c1 大于 A并且小于 Z就能保证其为大写字

18、母。 14 【正确答案】 A 【试题解析】 本题考查 C语言的综合基础知识。构成 C程序的基本单位是函数 ,不论 main 函数在整个程序中的位置如何 ,一个 C程序总是从 main 函数开始执行 ,C语言的函数定义都是互相平行、独立的 ,在定义函数时 ,一个函数内不能定义另一个函数。 C函数定义的一般格式有两种 :传统格式和现代格式。传统格式也称 K现代格式又称 ANSI格式 ,是现代编译系统使用的格式。 15 【正确答案】 D 【试题解 析】 在 C语言中没有逻辑类型,逻辑类型用整型来表示,故选项 A和选项 C不正确, C语言中没有集合类型,故选项 B 不正确。所以, D选项为所选。 16

19、 【正确答案】 B 【试题解析】 函数可以实现嵌套调用,但它的定义不可以嵌套。 17 【正确答案】 A 【试题解析】 本题 int型占 2个字节,即 16位, unsigned int 所能表示的数据范围是 0 (216-1),即 0 65535。 18 【正确答案】 D 【试题解析】 本题考查了数组的定义和初始化, c是一个字符型指针数组,每个元素都是 一个指向字符串的指针。 19 【正确答案】 D 【试题解析】 在 C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如 acd、 d ad、 adf124、 124 等都是合法的标识符号。而 2asdf、 s

20、d/=都不是合法的标识符。在 C语言中大写字母和小写字母被认为是两个不同的字符,如 ACD和 acd 是两个不同的标识符号。选项 D中用数字 2作为第一个字符,这是不合法的,故选项 D不正确。 20 【正确答案】 C 【试题解析】 本题的宏定义是合法的,宏定义展开为3*(3+(A+1)*a)=3*(3+(7+1)*3)=81。 21 【正确答案】 A 22 【正确答案】 D 【试题解析】 当用 scanf 函数从键盘愉入数据时,每行数据的末尾按下回车键(Enter键 )之前,可以任意修改。但按下回车键 putchar(c1)(Enter 键 )之后, scanf函数即接受了这一行数据,不能再回

21、去修改。所以本题中,当输入 123 CR时,变量 c1、 c2、 c3 的值分别为 1、 2、 3,当输入 45678 CR时,变量 c5、 c6的值 4和 5。所以用输出函数 putchar(c1)输出 1, putchar(c2)输出 2,printf(“%c%cn,c5,c6)输出 45。所以选项 D)为正确答案。 23 【正确答案】 A 【试题解析】 本题中 d=s0+s1+s2=1+3+5=9。 24 【正确答案】 A 【试题解析】 1与 1异或结果为 0, 0与 1异或结果为 1,可见要使某位数翻转,只要使其与 1进行异或运算即可。 0与 0进行异或运算结果为 0, 1与 0进行异

22、或运算结果为 1,可见要使某位的数不变,只要使其与 0进行异或运算即可。 25 【正确答案】 B 【试题解 析】 C语言规定,标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线。 26 【正确答案】 A 【试题解析】 根据函数 int f1(int x,int y)return x y?x:y;和 int馒 (int x,int y)retum x y?y:x;的定义可知,如果 x y成立,则函数 n 返回 x的值,函数 C返回 y的值。所以 n(a, B=4, n(c,d)=5, C(a, B=3, f2(c,d)=2,故 e=f2(4,5)=4, f=n(3,2)=3

23、, g=4+3+5+2-4-3=7。 27 【正确答案】 B 【试题解析】 本题考查函数调用,由于 a+b没有被括起来,所以S(a+b)=PT*a+b*a+b=5 5*1+2*1+2=9 5,故选择 B。 28 【正确答案】 C 【试题解析】 只能在循环体内和 switch 语句体内使用 break 语句。当 break 出现在循环体中的 switch 语句体内时,其作用只是跳出该 switch 语句体。当 break 出现在循环体中,但并不在 switch 语句体内时,则在执行 break 后,跳出本层循环。 29 【正确答案】 D 【试题 解析】 选项 A中,其他元素会自动以 0填充。选项

24、 C中维数是常量表达式,故没错。 30 【正确答案】 B 31 【正确答案】 A 【试题解析】 程序中将指针 q 赋予 NULL,即指向了空地址,而对空地址所对应的内容赋值 *q =*(p+5)虽然可以输出结果 6 11,但最后是会报错的,即输出提示Null pointer assignment。 32 【正确答案】 D 【试题解析】 指针类型的自定义的形式如下: typedef 类型说明符 *用户类型名。不难看出只有选项 D是正确的定义形式。所以, D选项 为所选。 33 【正确答案】 C 【试题解析】 本题首先定义一个全局变量 x并赋初值为 3,主函数中使用这个全局变量控制循环次数,循环执

25、行了 2次,调用两次 incre()函数。第一次调用incre(),定义一个静态变量 x并赋初值 1,然后执行 “x*=x+1”,使 x的值变为 2:第二次调用 incre()函数时,静态变量将保留上 饮退出时的值即 2,执行语句“x*=x+1”后, x的值变成 6,输出 x的值为 6。所以, 4个选项中 C为所选。 34 【正确答案】 D 【试题解析】 “|”为或运算符,当其左右表达 式中只要一个为非零则整个表达式的值 1。 |是按位或, 插入排序的第二部是将大于待插入元素的所有元素都向后移动 位 ,故在循环时,要从最后一个元素到第 p 个元素都要后移一位,因此第二空应填 i=p。最后一个循

26、环是将 N+1个元素都输出,故最后一空应为 i =N。 (注:本题有多种答案,以上仅提供一种 ) 56 【正确答案】 b=m j%i n 【试题解析】 函数中的变量 i和 j分别存放两个形参的最小数和最大数,在语句i=a和 j=b执行之前,要将 a和 b分别变为最小数和最大数,当 a b 时,程序使用中间变量将两者交换,所以题中第 个空中应当填写 “b=m”;为求两个整数的最大公约数,程序的 where循环条件必须为 j整除 i成立,所 以题中第二个空中应当填写 “j%i”;程序要通过 i的值返回最大公约数,因此在循环中要将每次整除的公钓数赋给 i,以保证最后返回的是两个,整数的最大公约数,所以第三个空中应当填写 “n”。

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

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

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