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

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

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