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

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

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

2、( )。 ( A) 15 ( B) 11 ( 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) PAD图 ( B)程序流程图 ( C)系统结构图 ( D)数据流图 (DFD图 ) 8 关于需求分析阶段任务的叙述中不正确的是 ( )。 ( A)确定软件系统的功能需求 ( B)确定软件系统的性能需求 ( C)需求规格说明书评审 ( D)制订软件测试计划 9 黑盒测试用例的主要根据是 ( )。 ( A)算法合理性 ( B)程序外部功能 ( C)相关数据结构 ( D)程序流程图 10 关于软件危机表现的叙述中不正确的是 ( )。 ( A)软件过程文件不规范 ( B)软件开发生产率低 ( C)软件质量难以控制 ( D)软件成本不断提高 11 关于程序模块化的叙述中错误的是 (

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

5、个表达式的结果不同的是 ( )。 ( A) m+ ( B) m+=1 ( C) +m ( D) m+1 14 关于 C语言数据类型叙述中,错误的是 ( )。 ( A)若要处理如 “人员信息 ”等含有不同类型的相关数据,应自定义结构体类型 ( B)若要保存带有多位小数的数据,可使用双精度类型 ( C)若只处理 “真 ”和 “假 ”两种逻辑值,应使用逻辑类型 ( D)整数类型可以用来表示自然数 15 以下数值常量不符合 C语言语法的是 ( )。 ( A) 3 0E0 2 ( B) le3 ( C) 012 ( D) 0xabcd 16 有如下程序段: int x=12; double y=3 14

6、1593; printf( d 8 6f, x, y); 其输出结果是 ( )。 ( A) 12, 3 141593 ( B) 123 141593 ( C) 12 3 141593 ( D) 123 1415930 17 已知字符 A的 ASC 代码值是 65,字符变量 a的值是 A, b的值是 D。则执行语句 orintf( d, d, a, b一 2);的输出结果是 ( )。 ( A) A, D ( B) A, B ( C) 65, 68 ( D) 65, 66 18 当 x为大于 1的奇数时,值为 0的表达式是 ( )。 ( A) x 2=0 ( B) x 3 ( C) x 2! =0

7、 ( D) x 2=1 19 有以下程序: #include main() int x; scanf( d, &x); if(x =4); else if(x 8)printf( d n, x); 程序运行时,输入的值在哪个范围才会有输出结果 ?( ) ( A)小于 4的整数 ( B)不等于 8的整数 ( C)大于 4或等于 8的整数 ( D)大于 4且小于 8的整数 20 有以下程序: #include main() int a=7; while(a ); printf( d n, +a); 程序运行后的输出结果是 ( )。 ( A) 0 ( B)一 1 ( C) 1 ( D) 7 21 有

8、以下程序: #include main() char b, c; inti; b=a; c=A; for(i=0; i 6; i+) if(i 2)putehar(i+b); else putchar(i+c); printf( n); 程序运行后的输出结果是 ( )。 ( A) abcDEF ( B) ABcDEf ( C) aBcDeF ( D) AbCdEf 22 有以下程序: #include main() int i, j, x=0; for(i=0; i 2; i+) x+: for(j=0; j 4; j+) if(j 2)continue; x+: x+: printf(x:

9、d n, x); 程序执行后的输出结果是 ( )。 ( A) x: 4 ( B) x: 8 ( C) x: 6 ( D) x: 12 23 设有以下函数: int fun(int n, char*s) 则下面对函数 指针的定义和赋值均正确的是 ( )。 ( A) int(*pf)(int, char); pf=&fun; ( B) int*pf(); pf=fun; ( C) int*pf(); *pf=fun; ( D) int(*pf)(int, char*); pf=fun; 24 若用变量作为实参调用函数,以下正确的是 ( )。 ( A)函数的形参和实参分别占用不同的存储单元 ( B)

10、形参只是形式上的存在,不占用具体存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的形参会覆盖实参存储空间的值 25 若要求定义 具有 10个 float型元素的一维数组 a,则以下定义语句中错误的是( )。 ( A) float a5+5; ( B) float n=10, an; ( C) #define n 5 float a2*n; ( D) #define N 10 float aN; 26 有以下程序: #include main() int i, t3=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i=0; i 3; i+) printf( d, t2

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

12、d, ak); printf( n); 程序运行后的输出结果是 ( )。 ( A) 2341098765 ( B) 03456987 12 ( C) 9876543210 ( D) 0987651234 28 有以下程序: #include main() int a44=1, 2, 3, 4, 1, 6, 5, 9, 3, 7, 2, 5, 4, 2, 4, l, 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) 9, 1, 2, 6 ( B) 6, 2, 3, 4 ( C) 6, 4, 3, 2 ( D) 9, 3, 4, 6 29 以下关于字符串的表达式中正确的语句组是 ( )。 ( A) char*s; s=Chinese! ; ( B) char*s; s=Chinese! ; ( C) char s 10; s=Chinese! ; ( D) char s; s=Chinese! ; 30 若有以下定义和语句: #include char cl10=123, c2= n123 ; printf( d d n, strlen(c1), strlen

14、(c2); 则输出结果是 ( )。 ( A) 10 7 ( B) 10 5 ( C) 3 7 ( D) 3 5 31 有以下程序: #include void funl(char*p) char*q; q=p; while(*q! = 0) (*q)+; q+; main() char a=1234567, *P; p=&a3; funl(P); printf( s n, a); 程序执行后的输出结果是 ( )。 ( A) 1235678 ( B) 2345678 ( C) 1245678 ( D) 7654321 32 有以下函数: int sf(char*s) char*t=s; whil

15、e(*t+); t; return(t一 s); 以下关于 sf函数功能叙述正确的是 ( )。 ( A)将字符串 s复制到字符串 t ( B)求字符串的 ASC 码值 ( C)求字符串 s的长度 ( D)求字符串 s所占字节数 33 有以下程序: #include int fun(int x, int y) if(y=0)return x; else return(fun(一一 x,一一 y); main() printf( d n, fun(5, 3); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 34 关于函数的叙述中错误的是 ( )。 ( A

16、) C程序函数中定义的自动变量,系统不自动赋确定的初值 ( B)在 C程序的同一函数中,可以在复合语句内定义变量 ( C) C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 ( D) C程序函数的形参不可以说明为 static型变量 35 有以下程序段: struct st int x; int*y; *ps; int a: 1, 2, b=3, 4; struct st c2=10, a, 15, b; ps=c; 以下选项中表达式的值为 15的是 ( )。 ( A) +ps一 x ( B) ps一 x ( C) *ps一 y ( D) (ps+)一 x 36 有以下程序:

17、#include struct STint n; int a20; ; void fun(int*a, int n) int i; for(i=0; i n一 1; i+) ai+=1; main() int i; struct ST s=10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; fun(s a, s n); for(i=0; i s n; i+) printf( d, , s a i); 程序运行后的输出结果是 ( )。 ( A) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( B) 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,

18、 ( C) 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, ( D) 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 37 有以下程序: #include #include typedef structchar name9; char sex; float score2; ST; void fun(ST x) STU y=Tom, m, 98 0, 90 0; int i; strcpy(x name, y name); x sex=y sex: for(i=0; i 2; i+) x score i=y score 1; main() ST student=B

19、ob, f, 99 2, 89 0; fun(student); printf( s, c, 2 0f, 2 0f n, student name, student sex,student score0, student score1); 程序运行后的输出结果是 ( )。 ( A) Tom, m, 98, 90 ( B) Bob, f, 99, 89 ( C) Bob, f, 98, 90 ( D) Tom, f, 99, 89 38 设文件指针 fp=fopen(file, W),关于此文本文件操作的叙述中正确的是 ( )。 ( A)可以随意读和写 ( B)写操作结束后可以从头开始读 ( C

20、)可以在原有内容后追加写 ( D)只能写不能读 39 有以下程序: #include #define f(x)2*x*x main() int a=2, s, t; s=f(a+1); t=f(a+1); printf( d, d n, s, t); 程序运行后的输出结果是 ( )。 ( A) 7, 18 ( B) 18, 18 ( C) 7, 7 ( D) 18, 7 40 有以下程序: #include main() char x=4; printf( d n, x=x 2); 程序运行后的输出结果是 ( )。 ( A) 16 ( B) 8 ( C) 40 ( D) 4 二、程序填空题 4

21、1 函数 fun的功能是:将一副扑克牌编号为 1, 2, 3, , 53, 54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,如第一次这样洗牌后的结果为: 1, 28, 2, 29, , 53, 27,54。第二次洗牌后的结果为: 1, 41, 28, 15, 2, 42, , 53, 40, 27, 14, 54。 程序的功能是:输出经过 n次这样洗牌后的结果。 请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的试题程序: #in

22、clude void fun(int a55, int n) int i, k; *found* int【 1】 55; for(i=0; i n; i+) for(k=1; k =27; k+) b2*k一 1=ak; *found* b【 2】 *k=ak+27; for(k=1; k =54: k+) *found* ak=【 3】 ; main() int m, a55, i; for(i=1; i 55; i+)ai=i; printf(请输入洗牌次数: ); scanf( d, &m); fun(a, m); for(i=l; i 55; i+)printf( d, , ai);

23、printf( n); 三、程序修改题 42 下列给定程序中函数 fun的功能是:用冒泡法对 6个字符串进行升序排列。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MOD11 C中,不得增行或删行,也不得更改程序的结构! #include #include #define MAXLINE 20 fun(char * pstr6) int i, j; char*P; for(i=0; i 5; i+) *found* for(j=i+1, j 6, j+) if(strcmp(*(pstr+i), *(pstr+j) 0) p=*(pstr+i); *found* *(p

24、str+j)=*(pstr+i); *(pstr+j)=p; void main( ) int i; char * pstr6, str6MAXUNE; for(i=0; i 6; i+)pstri=stri; printf( nEnter 6 string(1 string at each line): n); for(i=0; i 6; i+) scartf( s, pstri); fun(pstr); printf(The strings after sorting: n); for(i=0; i 6; i+)printf( s n, pstri); 四、程序设计题 43 若干名学生的成

25、绩已在主函数中放入一个 带头结点的链表结构中, h指向链表的头结点。 请编写函数 fun,其功能是:求出学生的平均分,并由函数值返回此平均成绩。 例如,若学生的成绩是: 85 76 69 85 91 72 64 87,则平均分应当是: 78 625。 注意:部分源程序在文件 PROC1 C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include #define N 8 struct slist double s; struct slist*next; : typedef struct slist STREC; do

26、uble fun(STREC*h) STREC*creat(double*s) STREC*h, *P, *q; int i=0; h=P=(STREC*)malloc(sizeof(STREC); p一 s=0; while(i N) q=(STREC*)malloc(sizeof(STREC); q一 s=si; i+; p一 next=q; p=q; P一 next=0: return h; outlist(STREC*h) STREC*P; p=h一 next; printf(head); do printf(一 4 1f, p一 s); p=p一 next; while(p! =0)

27、; printf( n n); main() double s E N=92, 83, 72, 81, 90, 85, 75, 65, ave; void NONO(); STREC*h; h=creat(s); outlist(h); ave=fun(h); printf(ave= 6 3f n, ave); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*in, *out; int i, j; double s N, ave; STREC*h; in=fopen(in dat, r); out=fopen(out dat

28、, W); for(i=0; i 10; i+) for(j=0; j N; j+)fseanf(in, lf, , &sj); h=creat(s); ave=fun(h); fprintf(out, 6 3lf ave); fclose(in); fclose(out); 国家二级( C语言)机试模拟试卷 135答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 链表的特点是通过指针链接下一个元素,所以它们的存储顺序和逻辑关系也不一致,但进行插入与删除时,不需要移动表中的元素,只需要改变下一个节点的指针就可以了。 2 【正确答案】 B 【试题解析】 队列是一种线性结构,所以 C、

29、D两项错误,循环队列是一种顺序存储结构。 3 【正确答案】 B 【试题解析】 二叉树中度为 0的叶子节点总比度为 2的节点多 1个,所以度为 2的节点个数是 51=4,总节点是 20,所以度为 1的节点数是 2054=11。 4 【正确答案】 A 【试题解析】 数据库模式分为内模式、外模式和概念模式。概念模式是指数据库中数据逻辑结构的描述,外模式是用户的数据视图,给每个用户的局部数据描述,内模式是指数据库物理存储结构与存取方法。 5 【正确答案】 D 【试题解析】 实体完整性约束要求关系的主键中属性值不能为空。 6 【正确 答案】 C 【试题解析】 设两个关系 R和 S的元数分别为 r和 s(

30、r s 0),那么 T=RS是一个 (r一 s)元的元组的集合,即 T中的域是在 R中但不在 S中的域组成,所以选C项。 7 【正确答案】 D 【试题解析】 PAD图在软件设计的详细设计阶段用到,系统结构图在程序需求分析阶段用到,程序流程图也在软件详细设计阶段用到,均属于软件设计过程中使用的工具,唯有数据流图不是在软件设计阶段用到的工具,它是结构化分析方法中用到的工具,是在可行性分析阶段用到的工具,而非软件设计阶段。 8 【正确答案】 D 【试题解析】 因为是软件需求阶段,所以 D选项不正确。 9 【正确答案】 B 【试题解析】 黑盒测试主要是对软件的功能进行测试和验证,因此不用测试软件内部的

31、相关内容,包括算法、数据结构和流程等。 10 【正确答案】 A 【试题解析】 软件危机主要是指软件需求无法满足,软件进度无法控制,软件不可维护,软件开发生产率低,软件质量难以控制,软件成本不断提高。所以选 A项。 11 【正确答案】 D 【试题解析】 程序模块化设计是采用自顶向下、逐步细化的方法,不是自底向上,所以选项 D不正确。 12 【正确答案】 D 【试题解析】 因为选项 B和 D是互反选项,所以答案定是其中之一, C语言的一个语句可以写在多行上,所以 D正确; A的错误在于 C语言可以通过 include语句将其他文件的内容引入当前文件, C项的错误在于 C语言的注释可以出现在程序中间

32、位置,当然也可以出现在语句前面。 13 【正确答案】 A 【试题解析】 m+是先使用表达式的值再计算加 1,所以表达式的值是 0, +m是先计算加 1再使用值,所以表达式的值为 1,其他两个选项表达式的值均为 1,所以选项 A正确。 14 【正确答案】 C 【试题解析】 C语言中没有逻辑类型;多种数据类型的全集可以通过结构体来定义,双精度类型可以表示带有多位小数的数据,整数可以精确表示自然数。 15 【正确答案】 A 【试题解析】 科学计数法的 E后面必须是整数,所以 A)项不合法, C)项和 D)项分别是合法的八进制数和十六进制数。 16 【正确答案】 B 【试题解析】 printf的输出完

33、全按照格式输出,格式中两个输出变量之间没有空格,因此,输出结果应该是 123 141593输出格式中的 8 6f。是指总共有 8位,其中 小数部分占 6位,所以 D)错。 17 【正确答案】 D 【试题解析】 C语言的字符变量可以当作特殊的整数变量对待,所以以 d的格式输出字符时,输出的是其对应的 ASC 代码。如果其和整数做运算,也是用ASC 代码进行运算,因此,结果是 65, 66。 18 【正确答案】 A 【试题解析】 x=3, 5, 7, 9 , x 2永远是大于 1的奇数,所以 A)项表达式为假, C项和 D)项表达式为真; x 3的值是大于 1的整数,所以表达式不为 0。 19 【

34、正确答案】 D 【试题解析】 if条件语句后跟了一个 空语句,故要执行 else if后面的语句,必须是要 x大于 4且小于 8。 20 【正确答案】 A 【试题解析】 注意到 while后面的分号是一个空语句,且 a是先用表达式,再减 1,所以 while循环结束后 a的值是一 1,在打印语句中 +a是先加 1再使用表达式,所以输出结果是 0。 21 【正确答案】 D 【试题解析】 当 i=0时,执行 else语句,打印 A,当 i=1时执行 if语句,打印b。 22 【正确答案】 B 【试题解析】 分析知,两个循环的外循环执行 2次,内循环执行 2次,但外部循环体内有两个 x+,内循环体内

35、有一个 x+,所以执行 x+的次数共计是外部 4次,内部是 2*2=4次,所以总共执行 8次,结果是 8。 23 【正确答案】 D 【试题解析】 函数的参数可以是指针类型。它的定义形式为 void(*pf)(),原函数定义的形参变量是一个整数型和一个字符指针型,所以答案 D正确。 24 【正确答案】 A 【试题解析】 如果用变量作为实参进行函数调用,则实参和形参会占用不同的存储单元,即使变量名相同,也不会互相影响;但如果使用指针作为实参调用函数,则因为地址在内存中是唯一 的,所以实参和形参占用相同的存储单元。 25 【正确答案】 B 【试题解析】 注意定义数组时,元素个数可以是宏定义常量,但不

36、能是变量。因此选项 B错。 26 【正确答案】 B 【试题解析】 for循环的变量 i=0, 1, 2,所以输出的数组元素是 t20,t11, t02,所以应该是 7, 5, 3。 27 【正确答案】 B 【试题解析】 子函数的功能是将数组中的元素进行对调,如 fun(a, 0, 2)是将数组中的元素 a0和 a2对调,所以执行 3次子函数以后的结果是 0345698712。 28 【正确答案】 B 【试题解析】 双重 for循环和 if条件语句结合实现对二维数组对角线上的元素1, 6, 2, 1进行从大到小的排序,输出结果只是第一行的内容,所以结果是 6,2, 3, 4。 29 【正确答案】

37、 B 【试题解析】 A选项错在不能用大括号, C选项和 D选项应在定义时赋初值,如果定义之后赋值,则需要对数组的每个元素分别进行赋值。 30 【正确答案】 D 【试题解析】 数组元素在求长度时只计算其中的有效字符,所以 123的有效长度是 3,字符串的 是转义字符,所以 n代表一个字符 (回车符 ),也只代表一个字符 ( ),所以 n123 的有效长度是 5。 31 【正确答案】 A 【试题解析】 子函数的功能是将字符串的每个字符加 1,注意到主函数中的实参是数组 a的第 4个元素,所以结果是 1235678。 32 【正确答案】 C 【试题解析】 子函数中开始时两个指针 s和 t均指向字符串

38、的首字符,执行while空循环语句后,由于 t+是先用值再加 1,所以 t指向了字符串结束符的下一个字符, t一一再将其移动回字符串的结束字符,而 s的位置一 直没有变化,所以, ts是求字符串的长度。 33 【正确答案】 B 【试题解析】 子函数的功能是递归调用,但可以看出递归时, x和 y的值是同时减小的,且没有其他表达式,所以当 y为 0的时候, x=xy=53=2。 34 【正确答案】 C 【试题解析】 静态变量的值只在第一次定义时赋初值,所以选项 C错误;定义的自动变量是个动态值,而可以在复合语句中定义变量;函数的形参是动态变量,不能说明为 static类型。 35 【正确答案】 D

39、 【试题解析】 定义的结构体中有两个变量,一个是整型 变量,一个是整型指针;用此结构体定义了一个有两个元素的数组,并将此数组名赋给了此结构体指针,因此,结构体指针 ps便指向了数组第一个元素,因此, +ps一 x=+(ps一x)=11, ps一 x=10, *ps一 y=*(ps一 y)=1, (ps+)一 x=15。 36 【正确答案】 D 【试题解析】 子函数的功能是将传入的数组的前 n一 1个元素的值均加 1。主函数中定义的结构体中包含了一个整数和一个数组,将其传入了函数后便实现了前n1个元素的加 1操作。 37 【正确答案】 B 【试题解析 】 子函数的功能是将形参的值用一个固定的值覆

40、盖,但因为是值传递,所以实参的值不会变化,所以在主函数中的结构体 astudent的值没有发生变化。 38 【正确答案】 D 【试题解析】 文件打开时的 w选项指该文件只能写不能读,因此答案 D正确。 39 【正确答案】 A 【试题解析】 此题考查的宏定义的代入计算,在使用宏定义时,一定是先代入值再计算表达式的值,因此, f(a+1)=2*a+1*a+l=2*2+1*2+1=7,而f(a+1)=2*(a+1)*(a+1)=2*(2+1)*(2+1)=18。 40 【正确答案】 A 【试题解析】 位运算是以二进制数为对象的, 4的二进制是 00000100,向左移动两位后是 00010000,是

41、 16。 二、程序填空题 41 【正确答案】 1 b 2 2 3 bk 【试题解析】 填空 1: for循环中使用了一个数组 b,用来临时存放交换位置后的扑克牌, C语言中变量需要先声明后使用,所以填空 (1)处需要声明一个数组 b。 填空 2:第二个 for循环是将数组 a中前一半元素 (即 1 27编号的扑克牌 )放入数组 b的奇数位置,将数组 a中的后一半元素 (即 28 54编号的扑克牌 )放入数组 b的偶数位置,实现扑克牌的交叉洗牌。所以填空 (2)处是数组 b的起始值为 2的偶数下标 2k,答案为 2。 填空 3:由于数组 b属于函数中的临时变量,所以将数组 a的元素交叉存储到数组

42、b后,还需要将数组 b的元素依次赋值给数组 a,第三个 for循环实现的功能是将数组 b赋值给数组 a,所以填空 (3)处需要填入对应下标为 k的数组 b的元素,答案为 bk。 三、程序修改题 42 【正确答案】 1 for(j=i+1; j 6; j+) 2 *(pstr+i)=*(pstr+j); 【试题解析】 1此处考查 for语句的格式,各表达式之间应用 “; ”隔开。 2此处考查用指针表示数组元素的方法, *(pstr+i)表示 pstr所指向数组的第 i个元素,同理木 (pstr+j)表示 pstr所指向数组的第 j个元素。 冒泡排序算法,其基本思想是,将待排序的元素看作是竖着排列

43、的 “气泡 ”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个 “气泡 ”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即 “轻 ”的元素在下面,就交换它们的位置。显然,处理一遍之后, “最轻 ”的元素就浮到了最高位置;处理二遍之后, “次轻 ”的元素就浮到了次高的位置。依此类推,完成排序。 四、程序设计题 43 【正确答案】 double fun(STREC*h) double ave=0 0; STREC*p=h一 next; while(p! =NULL) ave=ave+p一 s; p=p一 next; return ave N; 【试题解析】 题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各节虐数据 域中数值的和,再对和求平均分。遍历链表时应定义一个指向节点的指针 p,因为 “头节点 ”中没有数值,所以程序中让 p直接指向 “头节点 ”的下一个节点,使用语句 STREC*p=h next。

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

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

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