ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:95.50KB ,
资源ID:503397      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-503397.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级(C语言)笔试模拟试卷232及答案与解析.doc)为本站会员(hopesteam270)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、国家二级( C语言)笔试模拟试卷 232 及答案与解析 1 对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 2 在下列关于二叉树的叙述中,正确的一条是 _。 ( A)度为 2的树称为二叉树 ( B)二叉树的度肯定是 2 ( C)二叉树中所有结点的度都是 2 ( D)具有 3个结点的二叉树有 5种形态 3 设有二维数组 A89,其每个元素占 2个字节,从首地址 400开始,按行优先顺序存放,则元素 A8,5的存储地 址为 _。 ( A) 570 ( B) 506 ( C) 410 ( D) 482 4

2、在计算机中,算法是指 ( A)加工方法 ( B)解题方案的准确而完整的描述 ( C)排序方法 ( D)查询方法 5 下列叙述中正确的是 ( )。 ( A)实体集之间一对一的联系实际上就是一一对应的关系 ( B)关系模型只能处理实体集之间一对一的联系 ( C)关系模型属于格式化模型 ( D)以上三种说法都不对 6 线性表若采用链式存储结构时,要求内存中可用存储单元的地址 _。 ( A)必须是连续的 ( B)部分地址必须是连续的 ( C)一定是不连续的 ( D)连续不连续都可以 7 支持数据库各种操作的软件系统叫做 ( A)数据库管理系统 ( B)文件系统 ( C)数据库系统 ( D)操作系统 8

3、 检查软件产品是否符合需求定义的过程称为 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 9 栈和队列的共同点是 ( )。 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同特点 10 下列叙述中正确的是 ( A)数据库系统 是一个独立的系统,不需要操作系统的支持 ( B)数据库技术的根本目标是要解决数据的共享问题 ( C)数据库管理系统就是数据库系统 ( D)以上三种说法都不对 11 设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, scanf(“%d%d“, while(m!=n) while(m n)

4、m-=n; while(n m)n-=m; printf(“m=%dn“,m); ( A) m=3 ( B) m=2 ( C) m=1 ( D) m=0 19 若有说明语句: char ch=x41;,则 ch中 _。 ( A)包含 4个字符 ( B)包含 2个字符 ( C)包含 1个字符 ( D)字符个数不确定,说明不正确 20 若执行下列程序时从键盘上输入 2,则输出结果是 ( )。 #include stdio.h main() int a; scanf(“%d“, for(i=9;i=0;i-)ai=1O-i; printf(“%d%d%d“,a2,a5,a8); ( A) 258 (

5、 B) 741 ( C) 852 ( D) 369 23 以下程序的输出结果是 _。 int f() static int i=0; int s=1; s+=i; i+; return s; main() int i, a=0; for(i=0; i 5; i+) a+=f(); printf(“% dn“, a); ( A) 20 ( B) 24 ( C) 25 ( D) 15 24 有定义语句: char s10;,若要从终端给 s输入 5个字符,错误的输入语句是 ( A) sets(t+=a+; elsestatic int a=5;t+=a+; return t+a+; main()

6、int s=a,i; for(i=0;i 3;i+)s+=f(i); printf(“%dn“,s); 程序运行后的输出结果是 ( )。 ( A) 26 ( B) 28 ( C) 29 ( D) 24 26 若有下列说明和语句,则对结构体变量 st中成员 i的引用方式不正确的是( )。 Struct stu inti; intname; st,*#p; p ( A) st.i ( B) *p.i ( C) (*p).i ( D) p- i 27 下列程序的功能是给 r输入数据后计算半径为 r的圆面积 s。程序在编 译时出错。 main() /* Beginning */ int r; floa

7、t s; scanf(“%d“, S=*r*r; printf(“s=%fn“,s); 出错的原因是 ( ) ( A)注释语句书写位置错误 ( B)存放圆半径的变量 r不应该定义为整型 ( C)输出语句中格式描述符非法 ( D)计算圆面积的赋值语句中使用了非法变量 28 下列叙述错误的是 ( )。 ( A)在 C语言中的保留字必须小写 ( B)变 量的存储类型决定了变量的存储位置及其生存期 ( C)宏定义以 #define开头,行末必须加分号 ( D)在 C语言中的注释行可以出现在程序的任何位置 29 有以下程序: #include main() int x=4, y; do y=x; if(

8、!y)printf(“x“); else printf(“y“); x-; while(x); 程序的输出结果 是 ( )。 ( A) xyyx ( B) yyyy ( C) yyxx ( D) yxyx 30 若要说明一个类型名 STP,使得定义语句 STP s;等价于 char *s;,以下选项中正确的是 ( A) typedef STP char *s; ( B) typedef *char STP; ( C) typedef STP *char; ( D) typedef char* STP; 31 有以下程序: main() char a,b,c,d; scanf(“%c,%c,%d

9、,%d“, printf(“%c,%c,%c,%cn“,a,b,c,d); 若运行时从键盘上输入: 6,5,65,66回车。则输出结果是 ( )。 ( A) 6,5,A,B ( B) 6,5,65,66 ( C) 6,5,6,5 ( D) 6,5,6,6 32 下列对 C语言字符数组的描述中正确的是 ( A)任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型常量 ( B)一维数组的元素实质上就是一个变量,代表内存中的一个存储单元 ( C)如果要引用数组 中的每一个元素,则直接使用该数组名称即使 ( D)以上都不对 33 有如下程序 int a10=1, 2, 3, 4, 5, 6,

10、 7, 8, 9, 10; int*p=b=p5;则 b的值是 ( A) 5 ( B) 6 ( C) 9 ( D) 8 34 阅读下列程序,当运行函数时,输入 asd af aa z67,则输出为 #includestdio.h #include ctype.h #include string.h int fun(char*str) int i,j=0; for(i=0; stri!=0; i+) if(stri!=)strj+=stri; strj=0; main() char str81; int n; clrscr(); printf(“Input a string: “); gets(

11、str); puts(str); fun(str); printf(“%sn“, str); ( A) asdafaaz67 ( B) asdafaaz67 ( C) asd ( D) z67 35 有以下程序 main() int aa44=1, 2, 3, 4, 5, 6, 7, 8, 3, 9,10, 2, 4, 2, 9, 6; int i, s 0; for(i=0; i 4; i+) s+ aai1; printf(“%dn“, s); 程序运行后的输出结果是 ( ) ( A) 11 ( B) 19 ( C) 13 ( D) 20 36 以下能正确定义一维数组的选项是 ( )。 (

12、 A) int num; ( B) #define N 100 int numN ( C) int num0100; ( D) int N=100 int numN; 37 下列程序段的输出结果是 _。 static int a3=1,2,3; int*ptr,*p; p=a; ptr= 上面程序的输出结果是 _。 ( A)正数 ( B)负数 ( C)零 ( D)不确定的值 40 下列判断正确的是 ( )。 ( A) char a=“ABCD“;等价于 char*a;*a=“ABCD“; ( B) char str10=“ABCD“);等 价于 char str10;str=“ABCD“);

13、( C) char*s=“ABCD“;等价于 char s;*s=“ABCD“; ( D) char c5=“ABCD“,d5=“ABCD“;等价于 char c5=d5=“ABCD“; 41 设变量 x和 y均已正确定义并赋值。下列 if语句中,在编译时将产生错误信息的是 ( )。 ( A) if(x+); ( B) if(x y 44 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【 】和选择排序等。 45 在最坏情况下,冒泡排序的时间复杂度为【 】。 46 已知 “int a=2,b=2,c=3;”,则执行完语句 “a*=18+(b+)-(+C);”后, a的值是( )

14、。 47 以下程序运行后的输出结果是 ( )。 struct NODE int k; struct NODE*link; ; main() struct NODEm5, *p=m, *q=m+4; int i=0: while(p!=q) p- k=+i; p+; q- k=1+; q-; q- k=i: for(i=0; i 5;i+)printf(“%d“,mi.k); printf(“n“); 47 在宏定义 #define P13.14159中,用宏名 PI代替一个 _。 48 在面向对象方法中, ( )是具有相似性质的对象的集合。 49 有下列程序: #include stdio.h

15、 main() char c; while(c getchar()! ,)putchar(+C) ; 程序运行时,如果从键盘输入: A,B, CR,则输出结果 为 _。 50 以下程序的输出结果是【 】。 #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“); 51 以下程序输出的最后一个值是【 】。 int ff(int n) static int f=1; f=f*n; return f, main

16、() int i; for(i=1;i =5;i+) printf(“%dn“,ff(i); 52 设函数 findbig已定义为求 3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。 main() int findbig(int, int, int); int(*f)(), x, y, z, big; f= 【 】; seanf(“%d%d%d“, 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(“%d,%dn“,e.in.x,e.in.y); 54 下面的程序可对指定字符串中的

17、字符串进行从大到小排序、请将程序填完整。 (注:程序采用了冒泡排序算法 ) #include stdio.h #include string.h main() char*str=“ABCDabcd“,temp; int n,i; n=strlen(str); while(n- 1) for(i=0; i n;i+ if(stri stri+1) temp=【 】 ; stri=stri+1; 【 】 =temp; printf(【 】 ); 55 以下程序运行后的输出结果是【 】。 #include main( ) int a=1, b=7; do b=b 2; a+=b; while(b1)

18、; printf(“ d n”, A); ) 国家二级( C语言)笔试模拟试卷 232 答案与解析 1 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 2 【正确答案】 D 3 【正 确答案】 A 4 【正确答案】 B 【试题解析】 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。 5 【正确答案】

19、D 【试题解析】 实体集之间一对一的联系不一定是一一对应的关系,选项 A错误;关系模型中可以直接描述多对多的实体联系,选项 B错误;关系模型是与格式化模型完全不同的数据模型,它用表格数据来表示实体本身及其相互之间的联系,建立在数学理论基础上,选项 C错误。 6 【正确答案】 D 【试题解析】 在链式存储结构中, 存储数据结构的存储空间可以是连续的,也可以是不连续的,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。 7 【正确答案】 A 【试题解析】 数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等操作。 8 【正确答案】 A 【试题解析】

20、 确认测试是要检查已实现的软件是否满足了需求规格说明书中确定了的各种需求,以及软件配置是否完全正确。软件需求规格说明书是软件确认测试的基础。 9 【正确答案】 C 【试题解析】 栈和队列都是操作受 限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的 端进行插入操作,而在另一端进行删除操作。 10 【正确答案】 B 【试题解析】 本题考查数据库系统的基本概念和知识。 数据库系统除了数据库管理软件之外,还心须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和

21、网络系统软件的支持。因此,选项A的说法是错误的。 数据库可以看成是长期存储在计算机内的 、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项 B的说法是正确的。 通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。 因此,选项 C的说法是错误的。 因此,本题的正确答案是选项 B。 11 【正确答案】 D 【试题解析】 本题 中, scanf函数的

22、格式控制没有空格,所以,对于选项 A)、B)、 C),输入的第一个空格会作为字符赋值给变量 c1,而不会被解释成分隔符。 12 【正确答案】 C 【试题解析】 根据混合运算规则,如果有一个数据是 float型或 double型,则其他数据类型先转化为 double型,运算的结果最终也是 double型。 13 【正确答案】 C 【试题解析】 用高级语言编写的程序称为 “源程序 ”,而计算机只能识别和执行由 O和 1组成的二进指令,所以高级语言必须先用 种称为 “编译程序 ”的软件,把源程 序翻译成二进制形式的 “目标程序 ”。 14 【正确答案】 C 【试题解析】 程序流程图是软件过程设计中常

23、用的图形描述工具之一。构成程序流程图的最基本符号有: 或 ,表示控制流; 表示加工步骤; 表示逻辑条件。 15 【正确答案】 A 【试题解析】 当 x为 1时,执行 case 1, a自加等于 1,因为 case 1后没有break,接着执行 case 2,此时 a的值为 2, b自加为 1,故选择 A选项。 16 【正确答案】 C 【试题解析】 表达式 x*=y+8即 x=x*(y+8),所以其值为 3*(2+8)=30。 17 【正确答案】 A 18 【正确答案】 C 【试题解析】 分析程序可知,该程序实现的功能是对数 m,n 求其最大公约数。在本题中 m与 n 的值分别为 65与 14,

24、其最大公约数为 1,故其输出结果为 m=1。 19 【正确答案】 C 【试题解析】 x41是转义字符, x表示 41是十六进制数, 41 是字母 a的 ASCII码值。 20 【正确答案】 B 【试题解析】 本题考查 if else语句。程序中首先使用函数 scanf()通过键盘读入 a的值,并通过第 1个 if 语句,先 判断条件,取 a的值 2和 3比较,然后将 a的值加 1,发现条件成立,执行下列的 printf 语句,输出 a的值 3。 21 【正确答案】 A 【试题解析】 如果算远算符 “/”中参与运算的变量都是整型变量,则 “/”表示整除运算,所以 “1/3”的值应为 0,故选项

25、A的表达式值为 0,而事实上代数式“1/3sin2(1/2)”的值并不为 0,所以选项 A不能正确计算题目所要求的代数式。 22 【正确答案】 C 【试题解析】 在本题运行时主要注意的是当 i=9时, ai=l0-9=1; ai=8时,ai=10-8=2; i=7 时, ai=10-7=3; 依此类推,直到 i=O时, a i=10-0=10;此时, i的值已变为 -1,判断 for的循环条件,不成立,然后输出 a2,a5,a8分别为 8, 5, 2。 23 【正确答案】 D 【试题解析】 函数 f中变量 i为静态变量,函数 f调用结束后变量 i所占据的存储单元不会释放,而在主函数中 f被调用

26、 5次,具体过程如下: 第 1次调用 f: s=s+i=1+0=1, i=i+1=1,主函数中 a=a+f()=0+1=1 第 2次调用 f: s=s+i=1+1=2, i=i+1=2,主函数中 a=a+f()=1+2=3 第 3次调用 f: s=s+i=1+2=3, i=i+1=3,主函数中 a=a+f()=3+3=6 第 4次调用 f: s=s+i=1+3=4, i=i+1=4,主函数中 a=a+f()=6+4=10 第 5次调用 f: s=s+i=1+4=5, i=i+4=5,主函数中 a=a+f()=10+5=15 所以 printf 语句的输出结果为 15。 24 【正确答案】 D

27、【试题解析】 在格式输入中,要求给出的是变量的地址,而 D) 答案中给出的 s1是一 个值的表达式。 25 【正确答案】 C 【试题解析】 定义 “int a=2; ”中的全局变量 a,起作用的范围是从定义此变量的位置开始到本源文件结束;定义 “static int a=3; ”中的静态局部变量 a的作用范围是其所在的函数 f,并对其只赋一次初值,以后每次调用函数时不再重新赋值,而只保留上次函数调用结束时的值;复合语句 “staticint a=4; t+=a+; ”和 “static int a=5; t+=a+; )”中定义的两个变量 a属于复合语句中定义的变量,作用的范围只在其本身所在的

28、复合语 句内,对于本程序来讲,第三行定义的静态局部变量并不会对第 4、 5 26 【正确答案】 B 【试题解析】 本题主要考查结构指针: p &st,访问结构体的成员,可以通过结构变量访问,即 st.i,也可以用等价的指针形式即 (*p).i和 p- i。 27 【正确答案】 D 【试题解析】 在 C语言程序中,可以用一个符号名来代表一个常量,称为符号常量。这个符号名必须在程序中进行特别的 “指定 ”,并符合标识符的命令规则。在本题中圆周率 是一个符号常量,但在程序中并没有指定其值,所以编译器找不到其值就会报错 。所以选项 D正确。 28 【正确答案】 C 【试题解析】 本题涉及 C语言最基本

29、的 4个知识点: C语言的保留字必须小写: 变量的存储类型不同,其存储位置和生存期也不一样: C语言允许其注释部分出现在程序中的任何位置; 宏定义以 #define开头,行末不需要加分号。 29 【正确答案】 B 【试题解析】 本题考查 do-while语句和 ifelse 语句。 do-while语句的功能是先执行循环体再判断条件,所以,先判断 if 语句的条件, y=-4, !y 为逻辑 0,条件不成立,执行下面的 else语句, 输出 y,然后将 x的值减 1, x=3,条件不成立,执行下面的 else语句,输出 y,然后将 x的值减 1, x=2,满足 while循环条件,继续循环。第

30、三次循环:先判断 if 语句的条件, y=2, !y 为逻辑 0,条件不成立,执行下面的 else语句,输出 y,然后将 x的值减 1, x=1,满足 while循环条件,继续循环。第四次循环:先判断 if语句的条件, y=-1, !y 为逻辑 0,条件不成立,执行下面的 else语句,输出 y,然后将 x的值减 1, x=0,不满足 while循环条件,结束循环。所以 B正确。 30 【正确答案】 D 【 试题解析】 指针类型的自定义的形式如下: typedef 类型说明符 *用户类型名。不难看出只有选项 D是正确的定义形式。所以, D选项为所选。 31 【正确答案】 A 【试题解析】 主函

31、数中首先定义了 4个字符变量 a、 b、 c d,然后通过 scanf()函数输入 a、 b、 c、 d 输入中 a和 b是按字符格式 c输入的, c和 d是按整型符号 d输入的。在看下面的 printf()函数中,要求 a、 b、 c、 d 都按字符输出,故 a和 b原样输出为 6、 5, c和 d 将把与其 ASCII 码对应的字符输出, 65和 66 的 ASCII码对应字符 A和 B, 故最后的输出为 6, 5, A, B。所以, 4个选项中选项 A符合愿意。 32 【正确答案】 B 【试题解析】 本题考查了字符数组的基本概念。选项 A,因为数组元素的下标只能为整数,所以选项 A错误。

32、选项 C,引用数组中的元素,可以通过数组名和下标的方式来引用,只使用数组名不可以。 33 【正确答案】 C 【试题解析】 p=&a3将指针指向数组 a的第 4个元素, p5指向数组 a的第 9个元素,而 a8= 9,所以 b=9。 34 【正确答案】 A 【试题解析】 本题题意要求删除所有空格,即除 了空格以外的其他所有字符都要留下。由于 C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用 “留下 ”字符的算法,以前的题目亦是如此。用 stri从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格 (注意在 if()的单引号之间有一个空格 ),则将其保存 strj中

33、。注意 j的下标变化、初值及最后加串结束符0。 35 【正确答案】 B 36 【正确答案】 B 【试题解析】 选项 A定义数组时省略了长度,而 C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略 ,数组的长度为初始化时候的成员个数,故选项 A错误。在 C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项 C不正确。定义时数组的长度不能使用变量表示,故选项 D不正确,所以, 4个选项中选项 B符合题意。 37 【正确答案】 C 【试题解析】 ptr指向指针变量 p, p指向数组 a的首地址, (ptr0+)1+=3;的意思是将 p指向数组元素 a1,并将它的值增 3变为

34、5,此时, ptr指向 p, p指向 a1。 38 【正确答案】 C 【试题解析】 本题中首先定义了一个 3行 2列的数组 a,一个长度为 3的指针数组 p,接着把地址 a1赋给 p0此时 p0为 a10的地址, p0+1 为 a11的地址,故 *(P0+1)代表的元素为 a11。 39 【正确答案】 A 【试题解析】 strcmp(X1, X2)是串比较函数,本题中 “s1”、 “s2”分别表示这两个串中第一个字符的地址, s1+和 s2+是将指针指向串的第二个字符,则 *s1为“bCdEf”, *s2为 “B”。在字符串比较中,划、的确定是各个字符串相应位置字符的 ASCII码值的大小决定

35、的, s1 s2,返回值为正数。 40 【正确答案】 D 【试题解析】 a=“ABCD“书写错误,因为 “=”左边不能出现常量;数组名 s是代表 s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。 41 【正确答案】 C 【试题解析】 选项 A) 和选项 B) 在条件判断语句的后面是空语句,什么都不做;在选项 D) if 后面是一个复合空语句;而在选项 C) 中,在 x-后面少了一个分号,所以程序段在编译时,会出现语法错误。 41 【试题解析】 在面向对象的方法中,把具有相同属性和方法的对象 称为类,类是对象的抽象,对象是类的实例。 42 【正确答案】 变换型 【试题解析】

36、典型的数据流田有两种,印变换型和事务型。 43 【正确答案】 int* 44 【正确答案】 交换排序 【试题解析】 常见的排序方法有插入排序 (包括简单插入排序法和希尔排序法等 )、交换排序 (包括冒泡排序和快速排序法等 )和选择排序 (包括简单选择排序和堆排序等 )。注意:常见的排序方法及其作用机制和区别。 45 【正确答案】 n(n-1)/2或 0(n(n-1)/2) 【试题解析】 冒泡排序法是一种最 简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为 n,则在最坏的情况下,冒泡排序需要经过 n/2遍的从:前往后的扫描和 n/2 遍的从后往前的扫描,需

37、要的比较次数为 n(n-1)/2。 46 【正确答案】 32 47 【正确答案】 13431 47 【试题解析】 本题考查字符替换格式: #define标识符字符串。 48 【正确答案】 类 【试题解析】 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同操作性质的对象的集合,是已经定义了的关于对 象的特征、外观和行为的模板。所以类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其划应类的一个实例。 49 【正确答案】 B 【试题解析】 因为 c是字符类型变量,它只能接收一个字符,所以 c A,字符型变量在参与算术运算的时候是用其相应的 ASCII码参与运算的,

38、这样抖 c得到字母 B的 ASCII 码,用 putchar函数输出是输出其相应的字符,所以是 B。 50 【正确答案】 246 【试题解析】 函数 fun 中的 a是 static类型的变量,语句 static int a=0;是 给 a赋初值 0,并且只初始化一次。由于 a是静态的,所以当 fun函数返回 main 函数时, a值仍然保留在其所分配的存储空间。函数第一次调用时 a被赋值 2,然后每调用一次增加 2。 51 【正确答案】 120 【试题解析】 静态变量的类型说明符是 static,静态局部变量属于静态存储方式,它具有以下特点: 静态局部变量属于静态存储类别,在静态存储区内分配

39、存储单元。在程序整个运行期间都不释放。 对静态局部变量是在编译时初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留 上次函数调用结束时的值。 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值 0(对数值型变量 )或空字符 (对字符变量 )。 (注意: C语言中的非静态变量在定义时,系统并不会自动给它赋初值 ) 虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能用它的。本题中函数的功能是:与 for语句一起求一个整数的阶乘 0。 52 【正确答案】 findbig 【试题解析】 本题首先定义了一个指向函数的指针变量 f,如果希

40、望让它指向某个函数,只需把函数名赋给该指针变量即可。所以说本题的空 格处应该填入函数名 findbig。 53 【正确答案】 4, 8 【试题解析】 C语言规定,共用体中各个成员变量在内存中占用同一段内存单元,即 e.in.x和 e.a、 e.b 占用同一段内存单元,由于 e.in.x和 e.a、 e.b 占用的是同、段内存单元,所以程序最后的打印结果为 “4, 8”。 54 【正确答案】 stri stri+1 “%s“,str 【试题解析】 本题要求将字符串 str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通 过中间变量 temp 将字符两两交换,所以第一空应填: stri,第二空应填: stri+1儿最终打印输出得到的字符串 str,所以第三空应填: “%s“,str。 55 【正确答案】 5 【试题解析】 第一次循环执行后 b=3, a; 4,满足条件 b1,循环继续;第二次循环执行后 b=1, a=5,不满足条件 bl,结束循环。所以输出的 a值为 5。

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