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

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

1、国家二级( C语言)机试模拟试卷 61及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)栈与队列都只能顺序存储 ( B)循环队列是队列的顺序存储结构 ( C)循环链表是循环队列的链式存储结构 ( D)栈是顺序存储结构而队列是链式存储结构 2 设某二叉树的前序序列为 ABC,中序序列为 CBA,则该二叉树的后序序列为 ( A) BCA ( B) CBA ( C) ABC ( D) CAB 3 下列排序方法中,最坏情况下时间复杂度最小的是 ( A)冒泡排序 ( B)快速排序 ( C)堆排序 ( D)直 接插入排序 4 为了对有序表进行对分查找,则要求有序表 ( A)只能顺序存储 ( B)只

2、能链式存储 ( C)可以顺序存储也可以链式存储 ( D)任何存储方式 5 软件设计中模块划分应遵循的准则是 ( A)低耦合低内聚 ( B)高耦合高内聚 ( C)低耦合高内聚 ( D)内聚与耦合无关 6 下面属于整数类的实例是 ( A) 0x518 ( B) 0.518 ( C) -518 ( D) 5.18E+00 7 下面属于白盒测试方法的是 ( A)边界值分析法 ( B)基本路径测试 ( C)等价类划分 法 ( D)错误推测法 8 设有一个商店的数据库,记录客户及其购物情况,由三个关系组成:商品 (商品号,商品名,单价,商品类别,供应商 ) ,客户 (客户号,姓名,地址,电邮,性别,身份证

3、号 ) ,购买 (客户号,商品号,购买数量 ),则关系购买的键为 ( A)客户号 ( B)商品号 ( C)客户号 , 商品号 ( D)客户号 , 商品号 , 购买数量 9 有两个关系 R, S如下,由关系 R和 S通过运算得到关系 T,则所使用的操作为( A)并 ( B)自然连接 ( C)差 ( D)交 10 在数据库管理系统提 供的数据语言中,负责数据的查询、增加、删除和修改等操作的是 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 11 流程图是描述算法的很好的工具,一般的流程图中由几种基本图形组成。其中判断框的图形是 ( A)菱形 ( B)长方形

4、( C)平行四边形 ( D)椭圆型 12 以下叙述错误的是 ( A)在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的算法 ( B)同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率 ( C) 模块化的程序设计是采用自顶向下、逐步细化的原则 ( D)程序的每个模块都可通过三种基本结构实现 13 关于 C语言的变量名,以下叙述正确的是 ( A)变量名不可以与关键字同名 ( B)变量名不可以与预定义标识符同名 ( C)变量名必须以字母开头 ( D)变量名是没有长度限制的 14 有以下程序 #include stdio.h main() int a; a =

5、 (int)1.99*3; printf(“%dn“, a); 程序的运行结果是 ( A) 3 ( B) 5 ( C) 6 ( D)结果不确定 15 有以下程序 #include stdio.h main() int k=-17; printf(“%d,%o,%xn“, k, 1-k, 1-k); 程序的运行结果是 ( A) -17,22,12 ( B) -17,12,22 ( C) -17,-22,-12 ( D) 17,22,12 16 若有定义: int a; float b; double c; ,程序运行时输入: a=1,b=2,c=3 回车,能把值 1输入给变量 a、值 2输入给变

6、量 b、值 3输入给变量 c的输入语句是 ( A) scanf(“a=%d,b=%f,c=%lf“, ( B) scanf(“%d%f%lf“, ( C) scanf(“a=%d,b=%lf,c=%lf“, ( D) scanf(“a=%d,b=%f,c=%f“, 17 有以下程序 #include stdio.h main() int a=0,b=0,c=0,d=0; (+a | +b) ? +c : +d; printf(“%d,%d,%d,%dn“, a,b,c,d); 程序的运行结果是 ( A) 1,0,1,0 ( B) 1,1,0,1 ( C) 1,0,0,1 ( D) 1,1,1,

7、0 18 有以下程序 #include stdio.h main() int a,b; for (a=0; a 3; a+) scanf(“%d“, switch(b) case 1: printf(“%d,“, b+); case 2: printf(“%d,“, b+); default: printf(“%d,“, b+); printf(“n“); 执行时输入: 1 2 3 回车,则输出结果是 ( A) 1,2,3,2,3,3, ( B) 1,2,3, ( C) 2,3,4,3,4,4, ( D) 1,1,1,2,2,3 19 有以下程序 #include stdio.h main()

8、 int a=1,b=1; while(a-) b-; printf(“%d,%dn“, a,b); 程序的运行结果是 ( A) -1,0 ( B) 0,0 ( C) -1,-1 ( D) 1,1 20 有以下程序 #include stdio.h main() int a=1, b=0; for(;a 5; a+) if (a%2=0) break; b += a; printf(“%d n“, b); 程序的运行结果是 ( A) 1 ( B) 10 ( C) 0 ( D) 4 21 以下能正确输出字符 a 的语句是 ( A) printf(“%s“, “a“); ( B) printf(“

9、%s“, a); ( C) printf(“%c“, “a“); ( D) printf(“%d“, a); 22 有以下程序 #include stdio.h main() char c; do c=getchar(); putchar(c); while(c != #); printf(“n“); 执行时如输入: abcdefg#回车 , 则输出结果是 ( A) abcdefg# ( B) abcdefg ( C) abcdefg# ( D) # 23 以下关于 C语言函数参数传递方式的叙述正确的是 ( A)数据只能从实参单向传递给形参 ( B)数据可以在实参和形参之间双向传递 ( C)数

10、据只能从形参单向传递给实参 ( D) C语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用 24 以下关于指针的叙述正确是 ( A)所有类型的指针变量所占 内存的大小是一样的 ( B)指针变量所占内存的大小与其类型有关, char型指针变量只占 1个字节,double型指针变量占 8个字节 ( C)指针变量可直接指向任何类型的变量,而不会出现编译或运行错误 ( D)指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误 25 有以下程序 #include stdio.h int k=5; void f(int *s) s=

11、main() int m=3,*p= f(p); printf(“%d,%dn“, m, *p); 程序的运行结果是 ( A) 3,3 ( B) 5,5 ( C) 3,5 ( D) 5,3 26 有以下程序 #include stdio.h int *f(int *s,int *t) if (*s *t) *s=*t; return s; main() int i=3, j=5, *p= r=f(p,q); printf(“%d,%d,%d,%d,%dn“, i, j, *p, *q, *r); 程序的运行结果是 ( A) 5,5,5,5,5 ( B) 3,5,5,5,5 ( C) 5,3,3

12、,3,5 ( D) 3,5,3,5,5 27 有以下程序 #include stdio.h #define N 4 void fun(int aN) int bNN,i,j; for(i=0; i N; i+) for(j=0; j N; j+) bij = aN-1-ji; for(i=0; i N; i+) for(j=0; j N; j+) aij = bij; main() int xNN= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 13,14,15,16 , i; fun(x); fun(x); for (i=0;i N; i+) printf(“%d,

13、“, xii); printf(“n“); 程序的运行结果是 ( A) 16,11,6,1, ( B) 1,6,11,16, ( C) 4,7,10,13, ( D) 13,10,7,4, 28 有以下程序 #include stdio.h void fun(int a , int n) int i,j=0,k=n/2, b10; for (i=n/2-1; i =0; i-) bi =aj; bk =aj+1; j+=2; k+; for (i=0; i n; i+) ai = bi; main() int c10=10,9,8,7,6,5,4,3,2,1,i ; fun(c, 10); f

14、or (i=0;i 10; i+) printf(“%d,“, ci); printf(“n“); 程序的运行结果是 ( A) 2,4,6,8,10,9,7,5,3,1, ( B) 10,8,6,4,2,1,3,5,7,9, ( C) 1,2,3,4,5,6,7,8,9,10, ( D) 1,3,5,7,9,10,8,6,4,2, 29 有以下程序 #include stdio.h #include string.h main() int i; char a=“How are you!“; for (i=0; ai; i+) if (ai = ) strcpy(a, i=0; printf(“

15、%sn“,a); 程序的运行结果是 ( A) you! ( B) Howareyou! ( C) areyou! ( D) are you! 30 有以下程序(其中的 strstr()函数头部格式为: char *strstr(char *p1, char *p2) 确定 p2字符串是否在 p1中出现,并返回 p2第一次出现的字符串首地址) #include stdio.h #include string.h char *a=“you“; char *b=“Welcome you to Beijing!“; main() char *p; p = strstr(b, a) + strlen(a

16、) + 1; printf(“%sn“, p); 程序的运行结果是 ( A) to Beijing! ( B) you to Beijing! ( C) Welcome you to Beijing! ( D) Beijing! 31 有以下程序 #include stdio.h main() char b410; int i; for (i=0; i 4; i+) scanf(“%s“, bi); printf(“%s%s%s%sn“, b0,b1,b2,b3); 执行时若输入 : Fig flower is red. 回车则输出结果是 ( A) Figflowerisred. ( B) F

17、igfloweris red. ( C) Figflower is red. ( D) Fig flower is red. 32 有以下程序 #include stdio.h #include string.h main() char w20, a510=“abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz.“; int i; for (i=0; i 5; i+) wi=ai strlen(ai) - 1; w5= 0; puts(w); 程序的运行结果是 ( A) flqv. ( B) agmrw ( C) ekpuy ( D) flqvz 33 有以下程

18、序 #include stdio.h void f(int x, int n) if ( n 1) f( printf(“%d,“, x0); else printf(“%d,“, x0); main() int z6 = 1,2,3,4,5,6; f(z,6); printf(“n“); 程序的运行结果是 ( A) 6,5,4,3,2,1, ( B) 1,1 ( C) 1,1,1,1,1,1, ( D) 1,2,3,4,5,6, 34 有以下程序 #include stdio.h int a=2; int f() static int n; int m; m=n=0; n+; a+; m+;

19、 return n+m+a; main() int k; for (k=0; k 3; k+) printf(“%d,“, f( ); printf(“n“); 程序的运行结果是 ( A) 5,6,7, ( B) 5,7,9, ( C) 5,8,11, ( D) 5,5,5, 35 有以下程序 #include stdio.h #define S(x) x*x main() int k=5, j=2; printf(“%d,%dn“, S(k+j+2),S(j+k+2); 程序的运行结果是 ( A) 21,18 ( B) 81,81 ( C) 21,21 ( D) 18,18 36 有以下程序

20、 #include stdio.h typedef struct stu char name10; char gender; int score; STU; void f(STU *a, STU *b) *b = *a; printf(“%s,%c,%d,“, b- name, b- gender, b- score); main() STU a=“Zhao“, m, 290, b=“Qian“, f, 350; f( printf(“%s,%c,%dn“, b.name, b.gender, b.score); 程序的运行结果是 ( A) Zhao,m,290,Zhao,m,290 ( B)

21、 Zhao,m,290,Qian,f,350 ( C) Qian,f,350,Qian,f,350 ( D) Qian,f,350,Zhao,m,290 37 有以下程序 #include stdio.h #include string.h typedef struct stu char name10; char gender; int score; STU; void f(char *name, char gender, int score) strcpy(name, “Qian“); gender = f; score = 350; main() STU a=“Zhao“, m, 290,

22、 b; b=a; f(b.name,b.gender,b.score); printf(“%s,%c,%d,“, a.name, a.gender, a.score); printf(“%s,%c,%dn“, b.name, b.gender, b.score); 程序的运行结果是 ( A) Zhao,m,290,Qian,m,290 ( B) Zhao,m,290,Zhao,m,290 ( C) Zhao,m,290,Qian,m,350 ( D) Zhao,m,290,Qian,f,350 38 若有定义 typedef int T10; T *a20; 则与上述定义完全等价的说明语句是

23、( A) int *a2010; ( B) int *a20; ( C) int *a10; ( D) int *a1020; 39 有以下程序 #include stdio.h main() int c,d; c= 13 d=10 printf(“%d,%dn“, c, d); 程序的运行结果是 ( A) 5,1 ( B) 1,1 ( C) 18,1 ( D) 13,1 40 有以下程序 #include stdio.h main() FILE *fp; int i, a6=1,2,3,4,5,6, k; fp = fopen(“data.dat“, “w+b“); fwrite( for

24、(i=1; i 6; i+) fseek(fp, 0L, 0); fread( fseek(fp, 0L, 0); ai +=k; fwrite( rewind(fp); fread( fclose(fp); printf(“%dn“, k); 程序的运行结果是 ( A) 21 ( B) 6 ( C) 123456 ( D) 11 二、程序填空题 41 下列给定程序中,函数 fun的功能是计算下式 直到 并将计算结果作为函数值返同。 例如,若形参 e的值为 1e-3,函数的返回值为 2 985678。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出

25、如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h double fun(double e) int i; double s, X, /*found*/ s=0;i=【 1】 ; x=1 0; while(xe)/*found*/ 【 2】; /*found*/ x=(2 0*i一 1) (【 3】 )*(2 0* i); S=S+X; return s; main() double e=1e一 3; printf(“ nThe result is: fn”, fun(e); 三、程序修改题 42 下列给定程序中,函数 fun的功能是:计算 s所 指

26、字符串中含有 t所指字符串的数目,并作为函数值返回。 请改正程序中的错误或在下画线处填上正确的内容并把下画线删除,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include conio h #include string h #include stdio h #define N 80 int fun(char*s, char*t) ( int n; char*P, *r; n=0; P= s0; /*found*/ *r=t; while(*P) if(*r=*P) r+; if(*r= 0)

27、 n+; /*found*/ 1 p+; return n, main() char aN, bN; int m; printf(“ nPlease enter string a: ”); gets(a); printf(“ nPlease enter substring b: ”); gets(b), m=fun(a, b); printf(“ nThe result iS: m= d n”, m), 四、程序设计题 43 请编写函数 fun,其功能是:移动一维数组中的内容,若数组中有 n个整数,要求把下标从 0一 P(含 P, P小于等于 n一 1)的数组元素平移到数组的最后。 例如,一维

28、数组中的原始内容 为: 1、 2、 3、 4、 5、 6、 7、 8、 9、 10; P的值为3。移动后,一维数组中的内容应为: 5、 6、 7、 8、 9、 10、 1、 2、 3, 4。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #define N 80 void fun(int*w, int p, int n) main() int aN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15; int i, p, n=

29、15; printf(“The original data: n”); for(i=0; i n; i+) printf(“ 3d”, ai); printf(“ n nEnter p: ”); scanf(“ d”, p); fun(a, P, n); printf (“ nThe data after moving: n”); for(i=0; i n; i+) prLntf(“ 3d”, ai); prLntf(“ n n”); 国家二级( C语言)机试模拟试卷 61答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 栈是所有的插入与删除都限定在表的同一端进行的线性表;队列是指允

30、许在一端进行插入,而在另一端进行删除的线性表,二者均即可以顺序存储也可以链式存储。为了充分地利用数组的存储空间,把数组的前端和后端连接起来,形成一个环形的表,称为循环队列,因此循环队列是队列的一种顺序存储结构, B选项正确。 2 【正确答案】 B 【试题解析】 二叉树遍历可以分 为 3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。前序序列为ABC,则 A为根节点。中序序列为 CBA,则 C和 B均为左子树节点或右子树节点,且 C为 B父节点,可知后序序列为 CBA, B选项正确

31、。 3 【正确答案】 C 【试题解析】 在最坏情况下,对长度为 n的线性表排序,冒泡排序、快速排序、直接插入排序的时间复杂度均为 O(n2),堆排序时间复杂度为 O(nlog2n),复杂度最小。 C选项正确。 4 【正确答案】 A 【试题解析】 二分法查找也称拆半查找,是一种高效的查找方法。能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表。 A选项正确。 5 【正确答案】 C 【试题解析】 模块的独立程度可以由两个定性标准度量:内聚性和耦合性。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,要求模块之间的耦合尽

32、可能弱,即模块尽可能独立,且要求模块的内聚程度尽可能高。内聚性和耦合性是一个问题的两个方面,耦合性程度弱的 模块,其内聚程度一定高。 C选项正确。 6 【正确答案】 A 【试题解析】 整数类实例包括:十进制常量用 09表示,不能以 0开头;八进制常量用 07表示,必须用 0开头;十六进制常量用 0 9和 A F(a f)表示,必须以 0x或 0X开头。 A选项正确。 B选项是浮点数实例, C选项是字符串实例, D选项为科学计数法表示的浮点数实例。 7 【正确答案】 B 【试题解析】 白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用

33、例,检查程序中的逻辑通 路是否都按预定的要求正确地工作。白盒测试的主要技术有逻辑覆盖测试、基本路径测试等, B选项正确。常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等, A、 C、 D选项错误。 8 【正确答案】 C 【试题解析】 候选键(码)是二维表中能唯一标识元组的最小属性集。一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。在购买关系中,商品号、客户号、购买数量均不能唯一标识元组,每一个单独的属性集都不能作为键,但商品号与客户号构成的集合与三者构成的集合都可以唯一标识购买关系,而 前者为最小属性集,故商品号与客户号构成的集合为候选键, C选项正

34、确。 9 【正确答案】 D 【试题解析】 常用的扩充运算有交、除、连接及自然连接等。并: RS是将 S中的记录追加到 R后面。差: R-S结果是属于 R但不属于 S的记录组成的集合。交: RS结果是既属于 R又属于 S的记录组成的集合。自然连接:去掉重复属性的等值连接。交运算结果为 a 0 k1, D选项正确。 10 【正确答案】 C 【试题解析】 数据库管理系统提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构 建;数据操纵语言,该语言负责数据的操纵,包括查询与增、删、改等操作;数据控制语言,该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等

35、功能。 C选项正确。 11 【正确答案】 A 【试题解析】 算法可以用各种描述方法进行描述,目前最常用的有 3种:伪代码、流程图和 N-S结构图。传统的流程图下图所示的几种基本图形组成。 A选项正确。 12 【正确答案】 A 【试题解析】 结构化程序设计把一个复杂问题的求解过程分阶段进行,需要保证自顶向下、逐步细化、模块化设计、结构化编码。进行模块化设计 时,首先设计框架,并定义和调试好各个模块之间的输入输出关系,然后完成各个模块的编写调试后再集中编译,模块化的程序设计采用自顶向下、逐步细化的原则, A选项叙述错误, C选项叙述正确。各个模块可以由不同人员同时进行编写调试,提高编写程序的效率,

36、 B选项叙述正确。结构化程序主要由 3种基本控制结构组成,顺序结构、选择结构、循环结构,这三种基本结构可以解决任何复杂的问题, D选项叙述正确。故选择 A选项。 13 【正确答案】 A 【试题解析】 合法的标识符由字母(大、小写均可)、数字和下划线组成,并且必须以字母或下 划线开头。关键字是指被语言保留的,不能用作其他用途的标识符,它们在程序中都代表着固定的含义,用户不可重新定义, A选项正确。预定义标识符是系统已经有过定义的标识符,用户可以重新定义,所以可以作为变量名, B选项错误。变量名除了以字母开头以外,还可以以下划线开头, C选项错误。变量名没有长度限制,但不可超过编译器可以辨识的范围

37、, D选项错误。 14 【正确答案】 A 【试题解析】 浮点数 1.99被强制转换成 1,执行语句 a=( int) 1.99*3;计算得a=1*3=3, A选项正确。 15 【正确答案】 A 【试题解析】 整型常量有 3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。十进制整常量没有前缀,输出格式控制符为 %d;八进制整常量以作为前缀,输出格式控制符为 %o;十六进制整常量以 0X或 0x作为前缀,输出格式控制符为 %x。 1-k=18,整型常量 18用八进制表示为 22,十六进制表示为 12, A选项正确。 16 【正确答案】 A 【试题解析】 格式字符 d,输入十进制

38、整数;格式字符 f,输入浮点数;格式字符 lf,输入双精度浮点数。除了格式说明字符和附加格式字符外,如果还有其他 字符,则在输入数据时要求按一一对应的位置原样输入这些字符。程序运行时输入: a=1,b=2,c=3,则 scanf函数格式控制串对应的应该是 “a=%d,b=%f,c=%lf“,A选项正确。 17 【正确答案】 A 【试题解析】 条件表达式一般形式: exp1:exp2:exp3,执行规则为:若 exp1为真,求解 exp2,输出 exp2的值,不计算 exp3的值;若为假,求解 exp3,输出exp3的值,不计算 exp2的值。本题程序执行过程为:求解逻辑表达式 (+a | +b

39、),先求解 +a, a=1,则整个 表达式为真,不计算 +b,然后求解 +c,不计算+d,最后得到 a=1,b=0,c=1,d=0, A选项正确。 18 【正确答案】 A 【试题解析】 本题执行过程为,输入 1,匹配 case1,输出 1,然后执行 b+得b=2,再执行下一个 case的语句输出 2,然后执行 b+得 b=3,继续执行 default,输出 3;输入 2,执行 case2,输出 2,然后执行 b+得 b=3,执行 default输出 3;输入 3,执行 default输出 3。 A选项正确。 19 【正确答案】 A 【试题解析】 本题执行过程为 :先取 a值为 1,执行循环,

40、a=0,执行 b-,b=0,再取 a值为 0,判断条件不成立,退出循环,再执行 a-得到 a=-1,最后输出 a=-1,b=0。 A选项正确。 20 【正确答案】 A 【试题解析】 程序的执行过程为: a=1时 ,a%2=1条件不成立,执行语句 b+=a;得到 b=1; a=2时 ,a%2=0条件成立,执行语句 break;跳出循环。输出 b=1, A选项正确。 21 【正确答案】 A 【试题解析】 格式控制串用来指定每个输出项的输出格式, %s对应字符串, %c对应字符, %d对应整型。双引号 里面的内容为字符串 “a“,单引号里面的内容为字符 a, A选项正确。 B、 C、 D选项语句本身

41、就有问题。 22 【正确答案】 A 【试题解析】 程序执行过程为:读入一个字符存入缓存区,判断字符是否为“#“,如不是,继续读入字符,直到读入的字符是 “#“,存入缓存区,退出循环,将缓冲区字符一个个输出,结果为 abcdefg#, A选项正确。 23 【正确答案】 A 【试题解析】 数据只能由实参单向传递给形参称为 “值传递 “,而不能由形参传回来给实参, A选项正确;数组名、指针等作参数,实参传递给形参的是 地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实参和形参之间不可双向传递, B、 D选项错误。数据不能从形参传递给实参, C选项错误。 24 【

42、正确答案】 A 【试题解析】 专门用来存放变量地址的变量称为 “指针变量 “,所有地址值所占字节都是一样的,故指针变量所占内存大小一样, A选项正确, B选项错误。由于一个变量的地址(指针)还隐含有这个变量的类型信息,所以不能随意把一个地址存放到任何一个指针变量中去,只能把具有相同类型的变量的地址,存放到这个指针变量中,结构体变量 与某个成员类型不同,不能用同样的指针指向它们, C、D选项错误。 25 【正确答案】 A 【试题解析】 程序执行过程为: p指针指向变量 m,调用函数,将 m地址传给指针 s,然后再让 s指向变量 k,而 p指针所指并没有改变,输出为 3,3, A选项正确。 26

43、【正确答案】 A 【试题解析】 程序执行过程为: p指向 i, q指向 j,调用函数 f,将 i与 j地址传递给 s与 t,判断 i是否小于 j,成立则将 j=5赋值给 i,则 i=5,返回指向 i的指针并赋给 r,则 r指向 i,最后输出 5,5,5,5,5, A选项正确。 27 【正确答案】 A 【试题解析】 程序的执行过程为:调用函数 f,将二维数组 x地址传入函数,此函数实现将矩阵转置,然后将每一列首尾倒置,调用结果为xNN=13,9,5,1,14,10,6,2,15,11,7,3,16,12,8,4。再次调用函数 f,调用结果为 xNN=16,15,14,13,12,11,10,9,

44、8,7,6,5,4,3,2,1。输出结果为 16,11,6, 1,A选项正确。 28 【正确答案】 A 【试题解析】 程序的执行过程 为:调用函数 f,将数组 c地址与 n数值传入函数,此函数实现,将数组偶数位置元素从中间向前依次放入数组前半段,数组奇数位置元素从中间向后依次放入数组后半段,调用结果为c10=2,4,6,8,10,9,7,5,3,1,之后依次输出, A选项正确。 29 【正确答案】 A 【试题解析】 复制字符串函数 strcpy(str1,str2),将 str2完整的(包括 “0“)复制到 str1中, str1中原有的内容被覆盖。程序执行过程为:在 ai不等于 “0“的情况

45、下,判断当前元素是否为空格,若为空格将下一 个元素以及之后的所有字符复制到 a数组中。当 i=3时, if条件成立, a以及之后单元中元素为 “are you!0“,i=0,进行下一次循环,之后当 i=3时, if条件成立, a以及之后单元中元素为“you!0“, i=0,之后的元素中在 “0“前没有空格出现,输出 you!, A选项正确。 30 【正确答案】 A 【试题解析】 调用 strstr函数,可知 a指向的字符串在 b指向的字符串中第一次出现的位置,并将此地址赋给指针 p。 strlen()函数是求字符串的实际长度(不包含结束标志),并且作为函数值返回。 strstr函数返回的地址下

46、标值为 9,加上 a长度 3,再加 1,此时 p指向的地址下标值为 13,输出 “to Beijing!“,A选项正确。 31 【正确答案】 A 【试题解析】 scanf()函数从输入设备按照指定的类型输入对应类型的若干个数据,遇到空格、制表符和回车时读取结束。可知读到第一个空格时 b0赋值结束,为 Fig,从第一个有效字符读到第二个空格时 b1赋值结束,为 flower,可知b2为 is, b3为 red.。 printf()函数格式控制符 %s输出字符串,遇到 “0“结束输出。输出结果 为 “Figflowerisred.“, A选项正确。 32 【正确答案】 A 【试题解析】 puts(

47、)函数将数组中存放的字符串输出到输出设备中,用 “n“取代字符串结束符 “0“。 strlen()函数是求字符串的实际长度(不包含结束标志),并且作为函数值返回。程序中 for循环实现,将第 i个字符串最后一个字符放入 w数组下标值为 i的位置,即 ai5。最后将数组最后一个字符赋值为 “0“,输出字符串 w为 flqv, A选项正确。 33 【正确答案】 A 【试题解析】 在调用一个函数的过程中又 出现直接或间接的调用该函数本身,称为函数的递归调用。本题目中递归函数调用执行过程为: f(z,6) - f(n=1,a=3,m=1,返回 5; k=1,a=3,n=0, m=0;n=1,a=4,m=1,返回 6;k=2,a=4,n=0,m=0;n=1,a=5,m=1,返回 7; k=3退出循环。 A选项正确。 35 【正确答案】 A 【试题解析】 带参数的宏的调用格式:宏名(实参表),替换过程是,用宏调用提供的实参字符串,直接置

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

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

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