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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C语言)机试模拟试卷 57 及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)循环队列是队列的一种链式存储结构 ( B)循环队列是队列的一种顺序存储结构 ( C)循环队列是非线性结构 ( D)循环队列是一种逻辑结构 2 下列关于线性链表的叙述中,正确的是 ( )。 ( A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 ( B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 ( C)进行插入与删除时,不需要移动表中的元素 ( D)以上 说法均不正确 3 一棵二叉树共有 25个结点,其中 5个是叶子结点,则度为 1的结点数为

2、( ) ( A) 16 ( B) 10 ( C) 6 ( D) 4 4 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( )。 ( A)外模式 ( B)内模式 ( C)概念模式 ( D)逻辑模式 5 在满足实体完整性约束的条件下 ( )。 ( A)一个关系中应该有一个或多个候选关键字 ( B)一个关系中只能有一个候选关键字 ( C)一个关系中必须有多关键字个候选 ( D)一个关系中可以没有候选关键字 6 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)交 ( C)除 ( D)并 7 下面描述中,不属于软件危机表现的是

3、( )。 ( A)软件过程不规范 ( B)软件开发生产率低 ( C)软件质量难以控制 ( D)软件成本不断提高 8 下面不属于需求分析阶段任务的是 ( )。 ( A)确定软件系统的功能需求 ( B)确定软件系统的性能需求 ( C)需求规格说明书评审 ( D)制定软件集成测试计划 9 在黑盒测试方法中,设计测试用例的主要根据是 ( )。 ( A)程序内部逻辑 ( B)程序外部功能 ( C)程序数据结构 ( D)程序流程图 10 在软件设计中不使用的工具是 ( )。 ( A)系统结构图 ( B) PAD图 ( C)数据流图 (DFD图 ) ( D)程序流程图 11 以下选项中关于程序模块化的叙述错

4、误的是 ( A)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 ( B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块 ( C)把程序分成若干相对独立的模块,可便于编码和调试 ( D)可采用自顶向下、 逐步细化的设计方法把若干独立模块组装成所要求的程序 12 以下叙述中正确的是 ( A)用 C语言编写的程序只能放在一个程序文件中 ( B) C程序书写格式严格,要求一行内只能写一个语句 ( C) C程序中的注释只能出现在程序的开始位置和语句的后面 ( D) C程序书写格式自由,一个语句可以写在多行上 13 以下不合法的数值常量是 ( A) 8.0E0.5 (

5、B) 1.00E+01 ( C) 11 ( D) 0xabcd 14 以下关于 C语言数据类型使用的叙述中错误的是 ( A)若要处理如 “人员信息 “等含有不同 类型的相关数据,应自定义结构体类型 ( B)若要保存带有多位小数的数据,可使用双精度类型 ( C)若只处理 “真 “和 “假 “两种逻辑值,应使用逻辑类型 ( D)整数类型表示的自然数是准确无误差的 15 设有定义: int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是 ( A) +k ( B) k+=1 ( C) k+ ( D) k+1 16 有如下程序段: int x=12; double y=3.141593;

6、 printf(“%d%8.6f“, x, y); 其输出结果是 ( A) 123.141593 ( B) 12 3.141593 ( C) 12, 3.141593 ( D) 123.141593 17 已知字符 A的 ASCII代码值是 65,字符变量 c1的值是 A, c2的值是 D。则执行语句 printf(“%d,%d“, c1, c2-2 ); 的输出结果是 ( A) 65,68 ( B) A,68 ( C) A,B ( D) 65,66 18 以下选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( A) x%2=0 ( B) x/2 ( C) x%2!=0 ( D) x%2

7、=1 19 有以下程序 #include stdio.h main() int x; scanf(“%d“, if(x =3) ; else if(x!=10) printf(“%dn“, x); 程序运行时,输入的值在哪个范围才会有输出结果 ( A)小于 3的整数 ( B)不等于 10的整数 ( C)大于 3或等于 10的整数 ( D)大于 3且不等 10的整数 20 有以下程序 #include stdio.h main() int a = 7; while ( a- ) ; printf (“%dn“, a); 程序运行后的输出结果是 ( A) 0 ( B) -1 ( C) 1 ( D)

8、 7 21 有以下程序 #include stdio.h main() char b,c; int i; b= a; c = A; for (i=0; i 6; i+) if (i%2) putchar(i+b); else putchar(i+c); printf(“n“); 程序运行后的输出结果是 ( A) abcdef ( B) ABCDEF ( C) aBcDeF ( D) AbCdEf 22 有以下程序 #include stdio.h main() int i, j, x=0; for(i=0; i 2; i+) x+; for( j=0; j =3; j+) if(j%2) co

9、ntinue; x+; x+; printf(“x=%dn“,x); 程序执行后的输出结果是 ( A) x=4 ( B) x=8 ( C) x=6 ( D) x=12 23 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 ( A)函数的形参和实参分别占用不同的存储单元 ( B)形参只是形式上的存在,不占用具体存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的实参和其对应的形参共占同一存储单元 24 设有以下函数: void fun(int n,char *s) 则下面对函数指针的定义和赋值均正确的是 ( A) void (*pf)(int,char); pf=

10、 ( B) void *pf(); pf=fun; ( C) void *pf(); *pf=fun; ( D) void (*pf)(int, char*); pf=fun; 25 若要求定义具有 10个 int型元素的一维数组 a,则以下定义语句中错误的是 ( A) #define n 5 int a 2*n; ( B) int n=10,an; ( C) int a5+5; ( D) #define N 10 int aN; 26 有以下程序 #include stdio.h main() int i, t3=9,8,7,6,5,4,3,2,1; for(i=0;i 3;i+) prin

11、tf(“%d “,t2-ii); 程序执行后的输出结果是 ( A) 3 5 7 ( B) 7 5 3 ( C) 3 6 9 ( D) 7 5 1 27 有以下程序 #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,4,5,6,7,8,9,0, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k 10;k+) printf(“%d“

12、, ak); printf(“n“); 程序的运行结果是 ( A) 4321098765 ( B) 5678901234 ( C) 987654321 ( D) 987651234 28 有以下程序 #include stdio.h main() int a44= 1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1, i, k, t; for (i=0; i 3; i+) for (k=i+1; k 4; k+) if (aii akk) t=aii; aii=akk; akk=t; for (i=0; i 4; i+) printf(“%d,“, a0i); 程序运行后的输出结果

13、是 ( A) 1,1,2,6, ( B) 6,2,1,1, ( C) 6,4,3,2, ( D) 2,3,4,6, 29 以下选项中正确的语句组是 ( A) char *s; s=“BOOK!“; ( B) char *s; s=“BOOK!“; ( C) char s10; s=“BOOK!“; ( D) char s; s=“BOOK!“; 30 若有以下定义和语句 #include stdio.h char s110= “abcd!“, *s2=“n123“; printf(“%d %dn“, strlen(s1), strlen(s2); 则输出结果是 ( A) 10 7 ( B) 1

14、0 5 ( C) 5 5 ( D) 5 8 31 有以下程序 #include stdio.h void fun1(char *p) char *q; q=p; while(*q!=0) (*q)+; q+; main() char a=“Program“, *p; p= fun1(p); printf(“%sn“,a); 程序执行后的输出结果是 ( A) Prphsbn ( B) Prohsbn ( C) Progsbn ( D) Program 32 有以下函数 int aaa(char *s) char *t=s; while(*t+); t-; return(t-s); 以下关于 aa

15、a函数功能叙述正确的是 ( A)将串 s复制到串 t ( B)比较两个串的大小 ( C)求字符串 s的长度 ( D)求字符串 s所占字节数 33 有以下程序 #include stdio.h int fun(int a, int B) if(b=0) return a; else return(fun(-a,-b); main() printf(“%dn“, fun(4,2); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 34 以下选项中叙述错误的是 ( A) C程序函数中定义的自动变量,系统不自动赋确定的初值 ( B)在 C程序的同一函数中,各复合语句内可以定义

16、变量,其作用域仅限本复合语句内 ( C) C程序函数中定义的赋有初值的 静态变量,每调用一次函数,赋一次初值 ( D) C程序函数的形参不可以说明为 static型变量 35 有以下程序段 struct st int x; int *y; *pt; int a=1,2, b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式的值为 11的是 ( A) +pt- x ( B) pt- x ( C) *pt- y ( D) (pt+)- x 36 有以 下程序 #include stdio.h struct S int n; int a20; ; void f(

17、int *a, int n) int i; for (i=0; i n-1; i+) ai+=i; main() int i; struct S s=10, 2,3,1,6,8,7,5,4,10,9; f(s.a, s.n); for (i=0; i s.n; i+) printf(“%d,“, s.ai); 程序运行后的输出结果是 ( A) 2,3,1,6,8,7,5,4,10,9, ( B) 3,4,2,7,9,8,6,5,11,10, ( C) 2,4,3,9,12,12,11,11,18,9, ( D) 1,2,3,6,8,7,5,4,10,9, 37 有以下程序 #include s

18、tdio.h #include string.h typedef struct char name9; char sex; float score2; STU; void f(STU A) STU b=“Zhao“, m, 85.0, 90.0; int i; strcpy(a.name, b.name); a.sex = b.sex; for (i=0; i 2; i+) a.scorei = b.scorei; main() STU c=“Qian“, f, 95.0, 92.0; f(c); printf(“%s,%c,%2.0f,%2.0fn“, c.name, c.sex, c.sc

19、ore0, c.score1); 程序的运行结果是 ( A) Zhao,m,85,90 ( B) Qian,m,85,90 ( C) Zhao,f,95,92 ( D) Qian,f,95,92 38 有以下程序 #include stdio.h #define f(x) x*x*x main() int a=3,s,t ; s=f(a+1); t=f(a+1); printf(“%d,%dn“,s,t); 程序运行后的输出结果是 ( A) 10,64 ( B) 10,10 ( C) 64,10 ( D) 64,64 39 有以下程序 #include stdio.h main() char

20、a=4; printf(“%dn“, a=a 1 ); 程序的运 行结果是 ( A) 16 ( B) 8 ( C) 40 ( D) 4 40 设文件指针 fp已定义,执行语句 fp=fopen(“file“,“w“);后,以下针对文本文件file操作叙述的选项中正确的是 ( A)只能写不能读 ( B)写操作结束后可以从头开始读 ( C)可以在原有内容后追加写 ( D)可以随意读和写 二、程序填空题 41 下列给定程序中,函数 fun的功能足:把形参 a所指数组中的奇数按原顺序依次存放到 a0、 a1、 a2 中,把偶数从数组中删除,奇数个数通过函数值返回。 例如,若 a所指 数组中的数据最初排

21、列为: 9, 1, 4, 2, 3, 6, 5, 8, 7,删除偶数后, a所指数组中的数据为: 9, 1, 3, 5, 7,返回值为 5。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #iticlucle stdio h #define N 9 int fun(int a, int n) int i, j; j=0; for(i=0; i n; i+) /*found*/ if(ai 2=【 1】 ) /*found*/ aj=ai; 【 2】 ; /*found*/ return

22、【 3】 ; main() int bN=19, 1, 4, 2, 3, 6, 5, 8 7, i, n; printf(” nThe original clara: n”); for(i=0; i N; i+) printf(“ 4d”, bi); printf(“n”); n=fun(b, N); printf(“ nThe number of odd: d n”, n); printf(“ nThe odd number: n”); for(i=0; i n; i+) printf(“ 4d”, bi); printf(“n”); 三、程序修改题 42 下列给定程序中函数 fun的功能是

23、:将一个由八进制数字字符组成的字符串转换成与其面值 相等的十进制整数。规定输入的字符串最多只能包含 5位八进制数字字符。 例如,若输入 77777,则输出 32767。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include stdlib h #include string h int fun(char*p) int n; /*found*/ n=*p一 O; p+; while(*P!=0) /*found*/ n=n*8+*p一 0; p+; return n; ma

24、in() char s6, int i; int n; printf(“Enter a string(octal digits): ”), gets(s); if(strlen(s) 5) printf(“Error: string too longer! n n”); exit(0); for(i=0; si; i+) if(si 0| si 7) printf(“Error: c not is octal digits! n、 n”, si); exit(0); printf(“The originl string: ”); puts(s); n=fun(s); prLntf(“n s i

25、s convered to intege number: d n n”, s, n), 四、程序设计题 43 规定输入的字符串中只包含字母和 *号。请编写函数 fun,其功能是:将字符串尾部的 *号全部删除,前面和中间的 *号不动。 例如,字符串中的内容为 “*A*BC*DEF*C*”,删除后,字符串中的内容应当是 “*A*BC*DEF*G”。在编写函数时,不得使用 c语言提供的字符串函数。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容。仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #include conio h

26、 void fun(char*a) void main() char s81; printf(“Enter a string: n”); gets(S), fun(S); printf(“The string after deleted: n”), puts(s); 国家二级( C语言)机试模拟试卷 57 答案与解析 一、选择题 1 【正确答案】 B 【试题解 析】 在实际应用中,队列的顺序存储结构一般采用循环队列的形式。 2 【正确答案】 C 【试题解析】 一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的

27、插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。 3 【正确答案】 A 【试题解析】 根据二叉树的性质 3:在任意一棵二叉树中,度为 0的叶子结点总是比度为 2的结点多一个,所以本题中度为 2的结点是 5 1 4个,所以度为 1的结点的个数是 25 5 4 16个。 4 【正确答案】 B 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。 5 【正确答

28、案】 A 【试题解析】 实体完整性约束要求关系的主键中属性值不能为空值,所以选择A。 6 【正确答案】 C 【试题解析】 如果 S T/R,则 S称为 T除以 R的商。在除运算中 S 的域由 T中那些不出现在 R中的域所组成,对于 S 中的任一有序组,由它与关系 R中每个有序组所构成的有序组均出现在关系 T 中。所以本题选择 C。 7 【正确答案】 A 【试题解析】 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择 A。 8 【正确答案】

29、D 【试题解析】 需求分析阶段的工作有:需求获取;需求分析;编写需求规格说 明书;需求评审,所以选择 D。 9 【正确答案】 B 【试题解析】 黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择 B。 10 【正确答案】 C 【试题解析】 系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。 PAD图是在详细设计阶段用到的。程序流程图是对程序 流程的图形表示,在详细设

30、计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择 C。 11 【正确答案】 A 【试题解析】 程序模块化思想中 ,可以采用自顶向下,逐步细化的方法,所以选项 A中 “自底向上 “的说法是错误的。 12 【正确答案】 D 【试题解析】 C语言编写的程序可以放置于多个程序文件中 ,所以 A错误, C程序中的一行可以有多条语句 ,所以 B错误, C语言中的注释语句可以与原语句放在一行也可以不放在一行 ,所以 C错误。 13 【正确答案】 A

31、 【试题解析】 A选项中 E 后面的指数必须为整型数据 ,所以 A错误, C选项中011表示的是八进制常量 ,0xabcd 表示的是十六进制常量。 14 【正确答案】 C 【试题解析】 C语言中没有逻辑类型 ,所以 C错误,若要保存带有多位小数的数据 ,可以用单精度类型也可以用双精度类型,处理包含不同类型的相关数据可以定义为结构体类型,整数类型可以无误差的表示自然数。 15 【正确答案】 C 【试题解析】 #NAME? 16 【正确答案】 A 【试题解析】 printf函数中格式字符 “%8.6“的含义是 :变量 y的输出宽度为 8(包括小数点 ),小数点后面保留 6位小数 ,且右对齐,所以选

32、择 A。 17 【正确答案】 D 【试题解析】 打印时以 %d整型格式打印输出 ,所以字符标量 c1 的值打印出来就是 65,从 c2-2的值打印出来就是 68-2,即 66,所以选择 D。 18 【正确答案】 A 【试题解析】 算术运算符的优先级高于关系运算符的优先级 ,所以当 x为大于 1的奇数时 ,A选项的值为假 ,即 0, B 选项的值为不定值 ,但绝对不是 0, C选项的值为真 ,即 1, D选项的值为真 ,即 1。 19 【正确答案】 D 【试题解析】 根据代码可知如果 x的值小于 3,执行空语句 ,不进行打印操作,如果 x的值大于 3,再判断 x的值是否不等于 10,如果不等于

33、10就打印 x的值 ,所以选择 D选项。 20 【正确答案】 B 【试题解析】 a- -的含义是先用后减 1,所以当 a的值为 0时 ,跳出循环 ,但是仍要执行 a- ,a的值变为 -1。 21 【正确答案】 D 【试题解析】 函数的含义是如果 i的值能被 2整除 ,以字符格式打印输出 i+c的值 ,如果 i的值不能被 2整除打印 i+b的值,第一次 i值为 0,执行 else语句打印字符 A,第二次 i值为 1,打印 1+b 的值即字符 b,第三次 i值为 2,打印字符 C,依此类推选择D选项。 22 【正确答案】 B 【试题解析】 coutinue的作用是跳出循环体中剩余的语句而进行下一次

34、循环,第一次执行外循环 i的值为 0,执行 x+,x的值变为 1,第一次执行内层循环 j的值为 0,不满足 if条件 ,执行 x+,x的值变为 2,第二次内循环 j的值为 1,if条件成立 ,跳出本次循环 ,第三次 执行内循环 j的值为 2,不满足 if 条件 ,x的值变为 3,第四次执行内循环 j的值为 3满足条件跳出本次内循环 ,x的值加 1,即为 4,第一次外循环结束,第二次执行外循环时 ,同理 ,i的值被加了 ,4次 ,变为 8,所以选择 B选项。 23 【正确答案】 A 【试题解析】 本题重点考察的是函数的形参和实参。在定义函数时函数名后面括弧中的变量名称为 “形式参数 “(简称形参

35、 ),在主调函数中调用一个函数时,函数名后面括弧中的参数 (可以是一个表达式 )称为 “实际参数 “ (简称实参 )。 C语言规定,实参变量对形参变量的数据传递是 “值传递 “,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。因此 A选项正确。 24 【正确答案】 D 【试题解析】 函数的参数可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为 void (*pf)()。如果定义为 void *pf(),则表示函数 pf 返回值为一个基类型为 void 的指针。因此 D选项正确。 25

36、 【正确答案】 B 【试题解析】 一维数组的定义方式为:类型说明符 数组名 常量 表达式 ;注意定义数组时,元素个数不能是变量。因此应该选 B 选项。 26 【正确答案】 A 【试题解析】 二维数组 t3实际上指 t33= 9,8,7,6,5,4,3,2,1,通过循环语句 for语句可以得到 i=0,t20=3、 i=1,t11=5、 i=2,t02=7、 i=3时循环结束即 t20=3、 t11=5、 t02=7。因此 A选项正确。 27 【正确答案】 B 【试题解析】 该程序首先给一维数组赋值,然后三次调用 fun 函数,其中fun(a,0,3);功能是将一维数组中第 1个元素和第 4个元

37、素互换,第 2个元素和第 3个元素互换;其中 fun(a,4,9);功能是将一维数组中第 5个元素和第 10 个元素互换,第 6个和第 9个元素互换,第 7个元素和第 8个元素互换;其中 fun(a,0,9);功能是将将一维数组中第 1个元素和第 10个元素互换,第 2个元素和第 9个元素互换 依次类推。因此 B 选项正确。 28 【正确答案】 C 【试题解析】 首先对二维数组进行赋值操作, a00、 a01、 、 a32、a33的 值为 1、 4、 、 6、 1。通过 for嵌套循环语句和 if条件语句,对二维数组对角线元素进行由大到小的排序操作,程序最后通过 for语句输出二维数组第 1行

38、的 4个元素。因此 C选项正确。 29 【正确答案】 B 【试题解析】 A选项去掉大括号就正确了; C选项和 D选项应在定义时赋初值。因此 B选项正确。 30 【正确答案】 C 【试题解析】 strlen 函数返回字符串的长度,求字符串长度时,遇到结束标志 0为止,但是长度不包括结束标识。字符数组 s1 的后 5个元素没有赋值,都为 0,即 “abcd!“后为 0。所以 strlen(s1)的值为 5。字符指针 s2所指向的字符串中, n为转义字符换行符,表示 1个字符, 也为转义字符,代表 ,也是 1个字符,其后为字符串结束标识 0; 所以 strlen(s2)的值也为 5。因此 C选项正确

39、。 31 【正确答案】 B 【试题解析】 (*q)+是 q 所指的字符加 1, q+就是指针移到下一个字符。因此B 选项正确。 32 【正确答案】 C 【试题解析】 本题重点考察的知识点 while循环语句的应用。 aaa()函数中,首先定义了一个字符指针 t指向形参 s,然后通过一个 while循环让指针 t不断递增,直到 t指向字符串结束标识处。当 t指向结束标识处时,由于后缀 +运算符的原因,它还会被再递增 1,所以接下来的 t-;语句让它回到结束标识处。最后返回t-s, s还是指向字符串第 1个字符处,而 t指向了字符串结尾,故返回值为字符串的长度值。因此 C选项正确。 33 【正确答

40、案】 B 【试题解析】 本题重点考察函数的递归调用;题目中给出的 fun()函数直接调用了自身,所以是一个递归函数。其功能是:当参数 b为 0时,返回参数 a的值,否则返回 fun(-a,-b)的值。从这里可以看出,当 b 不断递减时, a也不断递减,直到 b 为 0时返回 a的值。那么 a递减的总值就是 b 原来的值。所以整个递归函数的作用就是返回 a-b 的值。因此 B选项正确。 34 【正确答案】 C 【试题解析】 A选项描述正确,自动变量未赋初值,为随机值; B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以; C选项描述是错误的,函数内的静态变量,只在第一次调用时候赋值

41、,以后调用保留上次值; D选项描述也正确,形参属于局部变量,占用动态存储区,而 static型变量占用静态存储区。因此 C选项正确 。 35 【正确答案】 A 【试题解析】 本题考查结构体数组初始化以及结构体变量的引用,题目中定义了一个结构体数组 c并初始化,指针 pt指向 c的第一个元素,那么 pt- x为 10,+pt- x为 11, *pt- y为 1, (pt+)- x为 20,所以答案为 A。 36 【正确答案】 C 【试题解析】 题目中定义了一个结构体类型 S,然后定义了一个结构体变量 s并初始化,执行 f 函数后,将 s中元素 a的每个元素都加上 i, i的值从 09,这里需要注

42、意,最后一个元素没有加 i,所以最终答案为 C选项。 37 【正确答案】 D 【试题解析】 本题考查结构体的相关操作以及传值、传址的区别,该题中调用 f函数后,会生成参数 c的一个副本,而不会改变 c的值,所以 c值维持原值,选项D正确。 38 【正确答案】 A 【试题解析】 本题考查宏定义的用法,宏定义只是做个简单的替换,所以本题中执行 f(a+1)=a+1*a+1*a+1=3*a+1=10,f(a+1)=(a+1)*(a+1)*(a+1)=64,所以答案为 A选项。 39 【正确答案】 B 【试题解析】 本题考查位运算,题目中将 4向左移一位然 后重新赋值给 a, 4左移一位为 8,程序运

43、行结果为 8,选项 B正确。 40 【正确答案】 A 【试题解析】 考查文件操作函数 fopen 的基础知识,以 “w“方式打开文件,只能写不能读。 二、程序填空题 41 【正确答案】 (1)1 (2)j+ (3)j 【试题解析】 填空 1:根据题目要求,需进行奇偶数的判定,可以通过 if 条件语句来判断数组元素是否为奇数,如果元素不能被 2整除,则为奇数,所以填入if(ai 2=1)。 填空 2:将为奇数的元素重新存放到数组的前面,同时下 标增 1。 填空 3:函数返回值需要返心数组中奇数的个数,因此返回变量 j。 三、程序修改题 42 【正确答案】 (1)n=*p一 0; (2)n=n*8

44、+*p一 0; 【试题解析】 (1)“0”和 “1”是字符串中的数字字符,为了进行数字运算,必须要将数字字符转换为数字,用数字字符减去字符 0的 ASCII码,就得到对应的数字。题中给出的是 0,应该是 0。 (2)要在一个八进制数的最后加上一位,原来各个位上的数上升一位,只需将原数乘以 8再加上个位数。 四、程序设计题 43 【正 确答案】 void fun(char * a) while(*a!= 0) a+; a一一; *指针 a指向字符串的尾部 * while(*a=*) a一一; *指针 a指向最后一个字母 * *(a+1)=0; *在字符串最后加上结束标志符 */ 【试题解析】 对于一个字符串要删除其尾部的 *号,只需要在最后一个不是 *号的宁符后面加上结束符号 0。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为 *号 ,直到找到非 +号字符为止,最后在该字符后面加上结束符号 0。

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