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

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

1、国家二级( C语言)机试模拟试卷 55及答案与解析 一、选择题 1 设循环队列为 Q(1: m),其初始状态为 front=rear=m。经过一系列入队与退队运算后, front=15, rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为 ( A) 4 ( B) 6 ( C) m-5 ( D) m-6 2 下列叙述中正确的是 ( A)循环队列属于队列的链式存储结构 ( B)双向链表是二叉树的链式存储结构 ( C)非线性结构只能采用链式存储结构 ( D)有的非线性结构也可以采用顺序存储结构 3 某二叉树中有 n个叶子结点,则该二叉树中度为 2的结点数为 ( A) n+

2、1 ( B) n-1 ( C) 2n ( D) n/2 4 下列叙述中错误的是 ( A)算法的时间复杂度与算法所处理数据的存储结构有直接关系 ( B)算法的空间复杂度与算法所处理数据的存储结构有直接关系 ( C)算法的时间复杂度与空间复杂度有直接关系 ( D)算法的时间复杂度与算法程序执行的具体时间是不一致的 5 软件工程的三要素是 ( A)方法、工具和过程 ( B)建模、方法和工具 ( C)建模、方法和过程 ( D)定义、方法和 过程 6 通常软件测试实施的步骤是 ( A)集成测试、单元测试、确认测试 ( B)单元测试、集成测试、确认测试 ( C)确认测试、集成测试、单元测试 ( D)单元测

3、试、确认测试、集成测试 7 下面可以作为软件设计工具的是 ( A)系统结构图 ( B)数据字典 (DD) ( C)数据流程图 (DFD图 ) ( D)甘特图 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 ( A)逻辑设计阶段 ( B)需求分析阶段 ( C)概念设计阶段 ( D)物理设计阶段 9 设有关系表学生 S( 学号,姓 名,性别,年龄,身份证号 ) ,每个学生学号唯一。除属性学号外,也可以作为键的是 ( A)姓名 ( B)身份证号 ( C)姓名,性别,年龄 ( D)学号,姓名 10 在数据库系统中,考虑数据库实现的数据模型是 ( A)概念数据模型 ( B)逻辑数据模型 (

4、 C)物理数据模型 ( D)关系数据模型 11 以下选项中叙述正确的是 ( A)结构化程序的三种基本结构是循环结构、选择结构、顺序结构 ( B) C语言源程序不编译也能直接运行 ( C)使用 N S流程图不能描述复杂算法 ( D)计算机能够直接运行 C语言 源程序,不必进行任何转换 12 以下选项中叙述正确的是 ( A)使用三种基本结构就可以实现任何复杂算法 ( B)只要程序包含了三种基本结构中的任意一种,就是结构化程序 ( C)程序语法错误要在运行时才能发现 ( D) C语言程序不需要包含 main()函数 13 以下选项中,合法的 C语言常量是 ( A) 1.234 ( B) C+ ( C

5、) “2.0 ( D) 2Kb 14 以下选项中,合法的 C语言实数是 ( A) 3.1e0.4 ( B) 2.00E-01 ( C) E13 ( D) 7.12E 15 设 a,b,c是整型变量且均已赋值,则以下选项中错误的赋值语句是 ( A) a = (b = 3) = 1; ( B) a = (b = 2) + c; ( C) a = b = c + 10; ( D) a = 1 + (b = c = 2); 16 有如下程序 #include stdio.h main() int x = 072; printf(“%dn“, x+1); 程序运行后的输出结果是 ( A) 59 ( B)

6、 73 ( C) 115 ( D) 72 17 有如下程序 #include stdio.h main() int a = 0, b = 1; if (a+ else printf(“F“); printf(“a=%d,b=%dn“, a, b); 程序运行后的输出结果是 ( A) Ta=1,b=2 ( B) Fa=0,b=2 ( C) Fa=1,b=1 ( D) Ta=0,b=1 18 有如下程序 #include stdio.h main() int i, data; scanf(“%d“, for (i=0; i 5; i+) if (i data) continue; printf(“

7、%d,“, i); printf(“n“); 程序运行时,从键盘输入: 3回车后,程序输出结果为 ( A) 3,4, ( B) 1,2,3,4, ( C) 0,1,2,3,4,5, ( D) 0,1,2, 19 有如下程序 #include stdio.h main() int i, data; scanf(“%d“, for (i=0; i 5; i+) if (i data) break; printf(“%d,“, i); printf(“n“); 程序运行时,从键盘输入: 3回车后,程序输出结果为 ( A) 3,4, ( B) 0,1, ( C) 3,4,5, ( D) 0,1,2,3

8、 20 有如下程序 #include stdio.h main() char a = 3, b = A; int i; for (i=0; i 6; i+) if (i % 3) putchar(a + i); else putchar(b + i); printf(“n“); 程序运行后的输出结果是 ( A) A45D78 ( B) ABC678 ( C) 34CD78 ( D) 34AB78 21 有如下程序 #include stdio.h main() int i; for (i=0; i 5; i+) putchar(9 - i); printf(“n“); 程序运行后的输出结果是

9、( A) 54321 ( B) 98765 ( C) 98765 ( D) 43210 22 有如下程序 #include stdio.h main() int x = 0x13; if (x = 0x18) printf(“T“); printf(“F“); printf(“n“); 程序运行后的输出结果是 ( A) TF ( B) T ( C) F ( D) TFT 23 有如下程序 #include stdio.h int sum(int a, int b) return a + b - 2; main() int i; for (i=0; i 5; i+) printf(“%d“, s

10、um(i, 3); printf(“n“); 程序运行后的输出结果是 ( A) 54321 ( B) 1234 ( C) 45678 ( D) 12345 24 有如下程序 #include stdio.h int change(int* data) return (*data) +; main() int data = 123; change( printf(“%d,“, data); data = change( printf(“%d,“, data); printf(“n“); 程序运行后的输出结果是 ( A) 124,124, ( B) 123,124, ( C) 124,123, (

11、 D) 123,123, 25 有如下程序 #include stdio.h void change(int* array, int len) for (; len =0; len-) arraylen += 2; main() int i, array5 = 1,2; change(array, 4); for (i=0; i 4; i+) printf(“%d,“, arrayi); printf(“n“); 程序运行后的输出结果是 ( A) 2,3,4,5, ( B) 3,4,5,6, ( C) 3,4,2,2 ( D) 1,2,0,0, 26 以下选项中叙述正确的是 ( A) char

12、 c1, c2, *c3, c440; 是合法的变量定义语句 ( B)数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 ( C)数组下标的下限可以是负值 ( D)若有数组定义 float array4; 则语句 printf(“%f“, array3.12);是合法的 27 若有函数声明 void fun(float array, int *ptr); 以下叙述正确的是 ( A)函数参数 array, ptr 都是指针变量 ( B)函数参数 array 不是指针变量, ptr 是指针变量 ( C)调用函数时,实参数组的值将一一复制给 array数组 ( D)调用函数时, array是

13、按值传送, ptr是按地址传送 28 设有 如下程序段 int a8 = 0; int b = 0; char c2 = “A“, “B“; char d = “AB“; 以下叙述正确的是 ( A)只有 a,b,c的定义是合法的 ( B) a,b,c,d的定义都是合法的 ( C)只有 a,b的定义是合法的 ( D)只有 c的定义是合法的 29 以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是 ( A) char* str, name10; str = “Hello World“; ( B) char* str, name10; name = “Hello World“; ( C) c

14、har str110 = “prog.c“, str210; str2 = str1; ( D) char head_line; head_line = “=“; 30 有如下程序 #include stdio.h #include string.h main() printf(“%dn“, strlen(“0n0111“); 程序 运行后的输出结果是 ( A) 6 ( B) 8 ( C) 9 ( D) 4 31 有如下程序 #include stdio.h void convert(char ch) if (ch D) convert(ch+1); printf(“%c“, ch); mai

15、n() convert(A); printf(“n“); 程序运行后的输出结果是 ( A) ABCDDCBA ( B) ABCD ( C) A ( D) DCBA 32 有如下程序 #include stdio.h #include string.h main() char a = “THIS“, *b = “OK“; printf(“%d,%d,%d,%dn“, strlen(a), sizeof(a), strlen(b), sizeof(b); 程序运行后的输出结果是 ( A) 4,5,2,4 ( B) 4,4,2,1 ( C) 5,5,3,3 ( D) 4,5,2,3 33 有如下程序

16、 #include stdio.h void get_put() char ch; ch = getchar(); if (ch != n) get_put(); putchar(ch); main() get_put(); printf(“n“); 程序运行时,输入 1234回车,则输出结果是 ( A) 1234 ( B) 4321 ( C) 4444 ( D) 1111 34 有如下程序 #include stdio.h int sum(int data) static int init = 0; return init += data; main() int i; for (i=1; i

17、 =5; i+) printf(“%d,“, sum(i); printf(“n“); 程序运行后的输出结果是 ( A) 1,3,6,10,15, ( B) 1,2,3,4,5, ( C) 0,0,0,0,0, ( D) 1,1,1,1,1, 35 以下选项中的编译预处理命令行,正确的是 ( A) #define PI 3.14 ( B) #define eps 0.001 ( C) #DEFINE TRUE ( D) #define int INT 36 设有以下程序段 struct person char name10; char sex; float weight; zhangsan,

18、*ptr; ptr = 若要从键盘读入姓名给结构体变量 zhangsan的 name成员,输入项错误的是 ( A) scanf(“%s“, zhangsan- name); ( B) scanf(“%s“, zhangsan.name); ( C) scanf(“%s“, ptr- name); ( D) scanf(“%s“, (*ptr).name); 37 有如下程序 #include stdio.h struct person char name10; int age; main() struct person room4 = “Zhang“, 19, “Li“, 20, “Wang“

19、, 17, “Zhao“, 18; printf(“%s:%dn“, (room+2)- name, room- age); 程序运行后的输出结果是 ( A) Wang:19 ( B) Wang:17 ( C) Li:20 ( D) Li:19 38 有如下程序 #include stdio.h struct pair int first, second; ; struct pair get_min_max(int* array, int len) int i; struct pair res; res.first = array0; res.second = array0; for (i=1

20、; i len; i+) if (arrayi res.first) res.first = arrayi; if (arrayi res.second) res.second = arrayi; return res; main() int array5 = 9, 1, 3, 4; struct pair min_max = get_min_max(array, 5); printf(“min=%d,max=%dn“, min_max.first, min_max.second); 程序运行后的输出结果是 ( A) min=1,max=9 ( B) min=0,max=9 ( C) min=

21、1,max=4 ( D) min=0,max=4 39 有如下程序 #include stdio.h main() int a = 8, b; b = (a 2) % 2; printf(“%d,%dn“, a, b); 程序运行后的输出结果是 ( A) 8,0 ( B) 4,0 ( C) 4,1 ( D) 8,1 40 以下选项中叙述正确的是 ( A)文件指针是指针类型的变量 ( B)文件指针可同时指向不同文件 ( C)文件指针的值是文件在计算机磁盘中的路径信息 ( D)调用 fscanf函数可以向文本文件中写入任意字符 二、程序填空题 41 下 列给定程序中,函数 fun的功能是:将 NN

22、矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。 例如,若 N=3,有 F#0矩阵: 1 2 3 4 5 6 7 8 9 交换后为: 3 2 1 4 5 6 9 8 7 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行。也不得更改程序的结构 ! 试题程序: #inclucle stdio h #define N 4 /*found*/ void fun(int 【 1】 , int n) int i, s; /*found*/ for(【 2】 , i+) s=tii; tii=tini1; /*found*/ ti

23、ni1=【 3】 ; main() ( int tN=21, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 33, 10, i, j; printf(“ nThe original array: n”); for(i=0, i N; i+) for(j=0, j N; j+) printf(“ d”, tij), printf(“n”); fun(t, N); printf(“ nThe result is: n”); for(i=0, i N; i+) for(j=0; j N; j+) printf(“ d”, tij); prin

24、tf(“n”); 三、程序修改题 42 下列给定程序中函数 fun的功能足:将 P所指字符串中的所有字符复制到 b中,要求每复制三个字符之后捕入一个空格。 例如,若给 a输入字符串: “ABCDEFGIIIJK”,调用函数后,字符数组 b中的内容为: “ABE DEF GHI JK”。 请改正程序中的错 误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(char*P, char*b) int i, k=0; while(*P) i=1; while(i =3 *P) /*found*

25、/ bk=P; k+; P+; i+; if(*P) /*found*/ bk+=“”; bk=0;) main() char a80, b80; printf(“Enter a string: ”), gets(a); printf(“The origLnal string: ”), puts(a); fun(a, b); printf (“nThe string after in sert space: ”); puts(b);printf(“ n n”); 四、程序设计题 43 规定输入的字符串中只包含字母和 *号。编写函数 fun,其功能是:删除字符串中所有的 *号。编写函数时,不得使

26、用 C语言提供的字符串函数。 例如,字符串中的内容为 “*A*BC*DEF*G*”,删除后,字符串中的内容应当是 “ABCDEFG”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h void fun(char*a) void main() char s81, printf(“Enter a string: n”); gets(s); fun(s); printf(“The string after clele ted: n”), put

27、s(s); 国家二级( C语言)机试模拟试卷 55答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 循环队列是队列的一种顺序存储结构,用队尾指针 rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为 front=rear=m,当 front=15, rear=20时,队列中有 5个元素,比较次数为 4次, A选项正确。 2 【正确答案】 D 【试题解析】 循环队列是队列的一种顺序存储结构, A选项错误。双向链表为顺序存储结 构,二叉树通常采用链式存储

28、结构, B选项错误。完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式, C选项错误, D选项正确。 3 【正确答案】 B 【试题解析】 对任何一棵二叉树,度为 0的节点(即叶子节点)总是比度为 2的节点多一个。二叉树中有 n个叶子节点,则度为 2的节点个数为 n-1, B选项正确。 4 【正确答案】 C 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量。数据的存储结构直接决定数据输入,而这会影响算法所执行的基本运算次数, A选项叙述正确。算法的空间复杂度是指执 行这个算法所需要的内存空间,其中包括输入数据所占的存储空间, B选项叙述正确。而算法的时间复杂度与空间复杂度没有

29、直接关系,故选择 C选项。算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节所影响,而算法的时间复杂度与这些因素无关,所以是不一致的, D选项叙述正确。 5 【正确答案】 A 【试题解析】 软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程包含个要素:方法、工具和过程。 A选项正确。 6 【正确答案】 B 【 试题解析】 软件测试的实施过程主要有个步骤:单元测试、集成测试、确认测试(验收测试)和系统测试。 B选项正确。 7 【正确答案】 A 【试题解析】 程序设计分为:结构化程序设计,面向对象的程序设计。结构化设计方法

30、使用的描述方式是系统结构图,所以 A选项正确。 8 【正确答案】 A 【试题解析】 采用 E-R方法得到的全局概念模型是对信息世界的描述,并不适用于计算机处理,为了适合关系数据库系统的处理,必须将 E-R图转换成关系模式。这就是逻辑设计的主内容, A选项正确。 9 【正确答案】 B 【试题解析】 候选键是二维表中能唯一标识元组的最小属性集。一个二维表有多个候选码,则选定其中一个作为主键供用户使用。学生学号与身份证号均是唯一的,都可以作为主键, B选项正确。 10 【正确答案】 B 【试题解析】 数据模型按照不同的应用层次分为以下种类型:概念数据模型,它是一种面向客观世界、面向用户的模型,它与具

31、体的数据库管理系统和具体的计算机平台无关;逻辑数据模型,是面向数据库系统的模型,着重于在数据库系统一级的实现;物理数据模型,是面向计算机物理实现的模型,此模型给出了数据模型在计算机 上物理结构的表示。 B选项正确。 11 【正确答案】 A 【试题解析】 结构化程序主要由 3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题, A选项正确。编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的, B选项错误。算法可以用各种描述方法进行描述, N-S流程图把算法的每一步都用一个矩形框来表示,把一个个矩形框按执行的次序连接起来就是一个

32、算法描述,无论算法复杂与否都能用 N-S流程图描述, C选项错误。 C语言源程序需要经过编译和连接生 成目标文件和可执行文件后才能运行, D选项错误。 12 【正确答案】 A 【试题解析】 结构化程序主要由 3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题, A选项正确。结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计,而不是说包含了三种基本结构就是结构化程序, B选项错误。程序语法错误是在编译过程中发现的,一般来说编译

33、器只能检查语 法和最简单的语义错误,而不检查程序的逻辑错误, C选项错误。一个程序由一个或若干个函数构成,而程序中有且只能有一个主函数,即 main函数,程序总是从 main函数开始执行,其他函数由 main函数直接或间接调用执行,所以 C语言程序必须包含 main函数, D选项错误。 13 【正确答案】 A 【试题解析】 整型常量:用不带小数点的数字表示。实型常量:用带小数点的数字表示。字符型常量:用带有单引号的字符表示。字符串常量:用一对双引号括起来的一串字符。 1.234为实型常量, A选项正确。 C+不合法,若改 成 “C+“则为字符串常量, B选项错误。 “2.0不合法,不是任何类型

34、常量, C选项错误。2Kb不合法,若加上双引号 “2Kb“为字符串常量, D选项错误。 14 【正确答案】 B 【试题解析】 实型常量:用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。十进制小数形式由数字和小数组成,必须有小数点,且小数点的位置不受限制。指数形式由十进制数加阶码标志 “ “或 “ “以及阶码(只能为整数,可以带符号)组成。 .2e0为指数形式实数, A选项正确。3.1e0.4,阶数不是整数, C选项错误 。 E13阶码标志前缺少十进制数, C选项错误。 7.12E缺少阶码, D选项错误。 15 【正确答案】 A 【试题解析】 赋值运算结合性为由右向左结

35、合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。 A选项中,赋值运算(b=3)=1,左值为表达式,不是变量不能被赋值, A选项错误,所以选择 A选项。B选项运算过程为,先赋值 b=2,再计算 b+c,将结果赋给 a,是正确的赋值语句。 C选项运算过程为,先计算 c+10将结果赋给 b,再将 b赋给 a,是正确的赋值语句。 D选项运算过程为,先将 2赋给 c,再将 c赋给 b,然后计算 1+b,将结果赋给 a, 是正确的赋值语句。 16 【正确答案】 A 【试题解析】 整型常量有种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。十进制整常量没有前

36、缀,输出格式控制符为 %d;八进制整常量以作为前缀,输出格式控制符为 %o;十六进制整常量以 0X或 0x作为前缀,输出格式控制符为 %x。八进制数 072表示成十进制数为 58,即 x=072=58,以十进制格式输出 x+1=59, A选项正确。 17 【正确答案】 C 【试题解析】 题目中判断 if条 件是否成立, a+先取值为 0,则 (a+ 按照格式输出 a=1,b=1。 C选项正确。 18 【正确答案】 A 【试题解析】 continue语句只能用在循环结构中,其作用是结束本次循环,即不再执行循环体中 continue语句之后的语句,而是立即转入对循环条件的判断与执行。本题执行过程为

37、:输入 3,则 data=3;执行 for循环, i=0, if条件成立,结束本次循环,不输出 i值,执行下一次循环;直到 i =3,if条件不成立,依次输出 i值 3,4,直到 i=5退出 for循环。 A选项正确。 19 【正确答案】 D 【试题解析】 break语句作用是结束整个循环过程,不再判断执行循环的条件是否成立,且在嵌套循环中,其只跳出最内层的一层循环。本题执行过程为:输入3,则 data=3;执行 for循环,在 i =3时, if条件不成立,执行语句printf(“%d,“, i);依次输出 i值, 0,1,2,3;直到 i=4时, if条件成立,执行 break退出 for

38、循环。 D选项正确。 20 【正确答案】 A 【试题解析】 putchar函数是向标准输出设备上输出一个字符。字符在内存中以ASCII码方式存储,可以与整数进行加减运算,但是要保证计算结果在 0255之间。本题执行过程为: i=0,i%3=0, if条件不成立执行 else函数体,输出字符 A;i=1,i%3=1, if条件成立输出字符 4; i=2,i%3=2, if条件成立输出字符 5; i=3, if条件不成立,输出字符 D; i=4和 i=5时,分别输出字符 7与 8; i=6退出 for循环。所以程序运行后输出结果为 A45D78, A选项正确。 21 【正确答案】 B 【试题解析】

39、 putchar函数是向标准输出设备上输出一个字符。字符在内存中以ASCII码方式存储,可以与整数进行加减运算,但是要保证计算结果在 0255之间。本题执行过程为: i=0,输出字符 9,在 i 5的情况下,依次输出字符 8、 7、6、 5。在 i=5时,计数 for循环。最后显示在命令窗口结果为 98765, B选项正确。 22 【正确答案】 A 【试题解析】 x=0x18为赋值表达式,十六进制数 0x18非 0,即 x非 0, if条件成立输出 T,之后再 输出 F与回车符。程序运行后的输出结果是 TF, A选项正确。 23 【正确答案】 D 【试题解析】 函数调用的一般形式为:函数名 (

40、实际参数表 )对无参函数调用时,则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。函数 sum在 main函数之前,所以在 main函数中不需要声明。本题程序执行过程为:在 i=0,1,2,3,4时依次输出 sum( i, 3),即调用 sum函数后依次输出 1、 2、 3、 4、 5, D选项正确。 24 【正确答案】 A 【试题解析】 本题 程序执行过程为:调用 change函数,将变量 data地址传入函数,返回当前指针指向的变量值 123,之后此变量加一, data=124。输出data=124。再次调用函数,返回当前指针指向的变量值

41、124,然后此地址内存中变量加一, data=125,然后将返回值 124赋给变量 data=124,最后输出 data=124。A选项正确。 25 【正确答案】 C 【试题解析】 在对一维数组初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么语言将自动对 余下的元素赋初值 0。本题程序执行过程为:调用 change函数,将数组array=1,2,0,0,0首地址传入函数,函数实现将数组每个元素加 2,arrray=3,4,2,2,2。依次输出数组前 4个元素为 3,4,2,2。 C选项正确。 26 【正确答案】 A 【试题解析】 A

42、选项正确定义了字符变量 c1、 c2,字符型指针 c3,字符型一维数组 c440, A选项正确。 “是下标运算符, “下标 “可以是任何非负整型数据,取值范围是(数据元素的个数 -1)。在引用数组元素时,下标运算符内可以是常量也 可以是变量或者表达式, B选项错误。数组下标的下限不可以是负值, C选项错误。数组下标必须是整型数据, 3.12为浮点数, D选项错误。 27 【正确答案】 A 【试题解析】 数组名为数组的首地址,也是指向数组的指针,所以 array和 ptr都是指针, A选项正确, B选项错误。调用函数时,将实参数组首地址赋给指针array,而不是传递整个数组元素, C选项错误。调

43、用函数时, array与 ptr都是按地址传送的, D选项错误。 28 【正确答案】 C 【试题解析】 在对数组进行初始化时应该注意,如果对数组的 全部元素赋以初值,定义时可以不指定数组长度,如果被定义数组的长度与初值个数不同,则数组长度不能省略;如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么语言将自动对余下的元素赋初值。定义整型数组 a,长度为 8,并且其每个元素赋初值 0, a定义是合法的。定义整型数组 b,没有指定长度,但为 1个元素赋值 0,所以自动指定数组长度为 1, b定义是合法的。定义字符型数组 c,长度为 2,应对其元素赋值

44、字符型常量,而 “A“与 “B“均为字符串, c定义不合法。定义字符 d,赋初值字符串“AB“,这是不合法的定义,若要定义数组,必须要有 “ “下标运算符。可知,ab定义合法, cd定义不合法, C选项正确。 29 【正确答案】 A 【试题解析】 将字符指针变量初始化为一个字符串有两种方式,一种通过赋值运算使一个字符指针指向一个字符串常量: char* str; str =“Hello World“, A选项正确。另一种是定义一个字符指针变量,并且初始化为一个字符串的首地址:char* str=“Hello World“。字符指针变量与字符数组都可以用来实现字符串的存储和运算,但二者是有区别

45、的:( 1)数组名是一个地址常量,而字符指针变量是一个变量,所以不能给一个数组名赋值,如 name = “Hello World“错误, B选项错误;( 2)字符型的指针变量的值是可以改变的;( 3)字符指针变量和字符数组在内存中的存储情形不同,数组指的是按照数组长度分配的若干存储空间,而指针只是一个存储字符串首地址的存储空间,所以相同类型指针可以相互赋值,而数组不能直接用 “=“赋值, C选项错误。数组不可以直接赋值字符串, head_line = “=“不合法,只有在数组初始化时可以直接赋值,如 char head_line=“=“合法,并且定义数组时必须指定数组长度, char head

46、_line不合法, D选项错误。 30 【正确答案】 A 【试题解析】 由一对双引号括起来的一串字符为字符串。字符常量是用一对单引号括起来的单个字符,还有一些特殊字符常量,即以 “开头的转义字符。 “后可以为某些单个字符也可以为八进制或十六进制数字。 strlen函数统计字符串长度,遇到 “0“统计结束。 0n0111共 6个字符, A选项正确。 31 【正确答案】 D 【试题解析】 在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。本题程序的执行过程为:调用 convert(A)函数, ch=A, if条件成立 - convert(B)- convert(C)- c

47、onvert(D),if条件不成立,输出 D- 执行 convert(C)中 if语句后的输出语句,输出 C-执行 convert(B)中 if语句后的输出语句,输出 B- 执行 convert(A)中 if语句后的输出语句,输出 A,函数调用 完成。程序运行后的输出结果是 DCBA, D选项正确。 32 【正确答案】 A 【试题解析】 在对数组进行初始化时,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如 char a = “THIS“。将字符指针变量初始化为一个字符串可以定义一个字符指针变量,并且初始化为一个字符串的首地址,如 char *b=“OK“。 strlen函数统计字符串长度,遇到 “0“统计结束。 sizeof用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。 a数组0之前有效字符有 4个, 由于字符串有效字符之后有一个 0也会被放入数组,char类型占一个字节,所以数组 a所占字节数为 1*5=5。 b为指向字符串的指针,字符串长度为 2,指针类型变

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

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

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