1、二级公共基础知识-55 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:100.00)1.下面关于算法的叙述中,正确的是_。A算法的执行效率与数据的存储结构无关B算法的有穷性是指算法必须能在执行有限个步骤之后终止C算法的空间复杂度是指算法程序中指令(或语句)的条数D以上 3种描述都正确(分数:2.50)A.B.C.D.2.下列二叉树描述中,正确的是_。A任何一棵二叉树必须有一个度为 2的结点B二叉树的度可以小于 2C非空二叉树有 0个或 1个根结点D至少有 2个根结点(分数:2.50)A.B.C.D.3.如果进栈序列为 A,B,C,D,则可能的出栈序列
2、是_。AC,A,D,B BB,D,C,A CC,D,A,B D任意顺序(分数:2.50)A.B.C.D.4.下列各选项中,不属于序言性注释的是_。A程序标题 B程序设计者 C主要算法 D数据状态(分数:2.50)A.B.C.D.5.下列模式中,能够给出数据库物理存储结构与物理存取方法的是_。A内模式 B外模式 C概念模式 D逻辑模式(分数:2.50)A.B.C.D.6.下列叙述中,不属于软件需求规格说明书的作用的是_。A便于用户,开发人员进行理解和交流B反映出用户问题的结构,可以作为软件开发工作的基础和依据C作为确认测试和验收的依据D便于开发人员进行需求分析(分数:2.50)A.B.C.D.7
3、.下列不属于软件工程 3要素的是_。A工具 B过程 C方法 D环境(分数:2.50)A.B.C.D.8.数据库系统在其内部具有 3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是_。A外模式 B概念模式 C内模式 D存储模式(分数:2.50)A.B.C.D.9.将 E-R图转换到关系模式时,实体与联系都可以表示成_。A属性 B关系 C记录 D码(分数:2.50)A.B.C.D.10.某二又树中度为 2的结点有 10个,则该二叉树中有_个叶子结点。A9 B10 C11 D12(分数:2.50)A.B.C.D.11.以下叙述中正确的是_。AC 程序中注释部分可以出现在程序中任意合适的地方B
4、C 程序的书写格式是固定的,每行只能写一条语句C构成 C程序的基本单位是函数,所有函数名都可以由用户命名D在对 C语言程序进行编译时,可以发现注释行中的拼写错误(分数:2.50)A.B.C.D.12.下列合法的标识符是_。A12_3 B256 Ca.55 D_abhj(分数:2.50)A.B.C.D.13.以下不正确的转义字符是_。A Bd Cs D088(分数:2.50)A.B.C.D.14.下面程序的运行结果是_。y=5;x=14;y=(x=3*y,x+6),x-1);printf(“x=%d,y=%d“,x,y);Ax=27,y=27 Bx=12,y=13 Cx=15,y=14 Dx=y
5、=27(分数:2.50)A.B.C.D.15.sizeof(char)是_。A一种函数调用 B一个整型表达式C一个字符型表达式 D一个不合法的表达式(分数:2.50)A.B.C.D.16.下列 4个程序中,完全正确的是_。A#includestdio.hmain();/*programming*/printf(“programming!/n“);B#includestdio.hmain()/*/programming/*/printf(“programming!/n“);C#includestdio.hmain()/*/programming*/*/Dincludestdio.hmain()/
6、*programming*/printf(“programming!/n“);(分数:2.50)A.B.C.D.17.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“,scanf(“%d“,if(x+2)printf(“%d“,x);else printf(“%d/n“,x-);A4 和 3 B4 和 2 C4 和 1 D3 和 2(分数:2.50)A.B.C.D.19.以下叙述中不正确的是_。A在不同的函数中可以使用相同的名字的变量B函数中的形式参数是局部变量C在一个函数内定义的变量只在本函数范围内有效D在一个函数内的复合语句中定义的变量在本函数范围内有效(分数:2.50)A.
7、B.C.D.20.有以下程序:#includestdio.hmain()char Chr20;scanf(“%S“,printf(“%S/n“,Chr);运行上面的程序,输入字符串 Microsoft Visual Studio,则程序的执行结果是_。AMicrosoft Visual Studio BMCMicrosoft DMicrosoftVisuaIStudio(分数:2.50)A.B.C.D.21.若有“double a;“,则正确的输入语句是_。Ascanf(“%lf“,a); Bscanf(“%lf,Cscanf(“%lf“,(分数:2.50)A.B.C.D.22.当 a=3,b
8、=5,c=9,d=7 时,执行下面的程序段后,x 的值为_。if(ab)if(cd)x=4;elseif(ac)if(bd)x=6;else x=8;else x=9;else x=14;A9 B6 C 14 D4(分数:2.50)A.B.C.D.23.若 i、j 已定义成 int型,则以下程序段中内循环体的总执行次数是_。for(i=6;i0;i-)for(i=0;j4,j+)A20 B24 C25 D30(分数:2.50)A.B.C.D.24.以下选项中非法的字符常量是_。A B/0201 C/xAA D0(分数:2.50)A.B.C.D.25.以下程序的输出结果是_。#includest
9、dio.hint m=13;int fun(int x,int y)int m=2;return(x*y-m);main()int a=7,b=6;printf(“%d“,fun(a,b)/m);A1 B3 C7 D10(分数:2.50)A.B.C.D.26.下面说法正确的是_。A调用函数时,实参不可以是表达式,必须是数值B调用函数时,实参与形参是共用内存单元的C调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等D调用函数时,实参与形参的类型可不一致,编译器能够自动转换(分数:2.50)A.B.C.D.27.已知下列函数定义:fun(int *b,int c,int n,int
10、 data)int k;for(k=0;km*n;k+)*b=data;b+;则调用此函数的正确写法是(假设变量 a的说明为 int a50)_。Afun(*a,4,5,1); Bfun(Cfun(int*)a,4,5,1); Dfun(a,4,5,1);(分数:2.50)A.B.C.D.28.以下程序段的输出结果是_。#includestdio.hmain()char p4=“ABC“,“DEF“,“GHI“);int i;for(i=0;i3;i+)puts(pi);AABCBADGCABCDEFGHIDABC(分数:2.50)A.B.C.D.29.下面程序的运行结果是_。#include
11、stdio.h#includestring.hmain()char*s1=“abDuj“;char*s2=“ABdUG“;int t;t=strcmp(s1,s2);printf(“%d“,t);A正数 B负数 C零 D不确定的值(分数:2.50)A.B.C.D.30.已知:int c34;,则对数组元索引用正确的是_。Ac14 Bc1.50 Cc1+00 D以上表达都错误(分数:2.50)A.B.C.D.31.以下程序:#includestdio.h#includestring.hmain()char str=“abcd/n/123/xab“;printf(“%d“,strlen(str);
12、运行后的输出结果是_。A10 B9 C7 D14(分数:2.50)A.B.C.D.32.C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是_。A冠以关键字 extern B位置在函数体外部C作用范围是全程的 D位置在函数的外部(分数:2.50)A.B.C.D.33.设已执行预编译命令#includestring.h,以下程序段的输出结果是_。char s=“abcdefg“;printf(“%d/n“,strlen(s);A7 B8 C9 D10(分数:2.50)A.B.C.D.34.若有 char s33=“AAA“,“BBB“,“CCC“;说明语句,则与它等价的
13、语句是_。Achar*s=“AAA“,“BBB“,“CCC“;Bchar*s3=“AAA“,“BBB“,“CCC“;Cchar s5=“AAA“,“BBB“,“CCC“;Dchar s3=“AAA“,“BBB“,“CCC“;(分数:2.50)A.B.C.D.35.下列程序执行后的输出结果是_。void func(int *a,int b)b0=*a+6;main()int a,b5=0;a=0;b0=3;func(printf(“%d/n“,b0);A6 B7 C8 D9(分数:2.50)A.B.C.D.36.若有如下说明,且 int类型占两个字节,则正确的叙述为_。struct stint
14、a;int b2;a;A结构体变量 a与结构体成员 a同名,定义是合法的B程序只在执行到该结构体时才为结构体 st分配存储单元C程序运行时为结构体 st分配 8字节存储单元D类型名 struct st可以通过 extern关键字提前引用(分数:2.50)A.B.C.D.37.若有以下宏定义:#define N 2#define f(n)(N+1)*n)则执行语句 a=3*(N+f(5);后的结果是_。A语句有错误 Ba=51 Ca=80 Da 无定值(分数:2.50)A.B.C.D.38.设有一联合体变量定义如下:union datalong a;float b;int c;char d;un
15、ion data x;执行下列语句后,正确的联合体变量 x的值是_。x.a=111111;x.b=2222;x.c=2.1546;x.d=R;A111111 B2222 C2.1546 DR(分数:2.50)A.B.C.D.39.若 x=2,y=3,则 xint age;float p6;定义一个数组:struct a number10;假定文件已正确打开,不能正确地从文件中读入 10名工人数据到数组 b中的是_。Afread(b,sizeof(struct a),10,fp);Bfor(i=O;i10;i+)fread(bi,sizeof(struct a),1,fp);Cfor(i=0;i
16、10;i+)fread(b+i,sizeof(struct a),1,fp);Dfor(i=O;i5;i+=2)fread(b+i,sezeof(struct a),2,fp);(分数:2.50)A.B.C.D.二级公共基础知识-55 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:100.00)1.下面关于算法的叙述中,正确的是_。A算法的执行效率与数据的存储结构无关B算法的有穷性是指算法必须能在执行有限个步骤之后终止C算法的空间复杂度是指算法程序中指令(或语句)的条数D以上 3种描述都正确(分数:2.50)A.B. C.D.解析:解析 算法在运行过程
17、中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。2.下列二叉树描述中,正确的是_。A任何一棵二叉树必须有一个度为 2的结点B二叉树的度可以小于 2C非空二叉树有 0个或 1个根结点D至少有 2个根结点(分数:2.50)A.B. C.D.解析:解析 二叉树是由 n0 个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。二又树具有如下两个特点:非空二叉树只有一个根结点。每一个结点最多有两棵子树,且分别
18、称为该结点的左子树与右子树。3.如果进栈序列为 A,B,C,D,则可能的出栈序列是_。AC,A,D,B BB,D,C,A CC,D,A,B D任意顺序(分数:2.50)A.B. C.D.解析:解析 栈的操作原则为后进先出。选项 B中出栈顺序可按“A 进,B 进,B 出,C 进,D 进,D 出,C出,A 出”实现。4.下列各选项中,不属于序言性注释的是_。A程序标题 B程序设计者 C主要算法 D数据状态(分数:2.50)A.B.C.D. 解析:解析 注释一般为序言性注释和功能性注释。序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复
19、审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。5.下列模式中,能够给出数据库物理存储结构与物理存取方法的是_。A内模式 B外模式 C概念模式 D逻辑模式(分数:2.50)A. B.C.D.解析:解析 数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和
20、存取方式的描述。6.下列叙述中,不属于软件需求规格说明书的作用的是_。A便于用户,开发人员进行理解和交流B反映出用户问题的结构,可以作为软件开发工作的基础和依据C作为确认测试和验收的依据D便于开发人员进行需求分析(分数:2.50)A.B.C.D. 解析:解析 软件需求规格说明书有以下几个方面的作用:便于用户、开发人员进行理解和交流。反映出用户问题的结构,可以作为软件开发工作的基础和依据。作为确认测试和验收的依据。7.下列不属于软件工程 3要素的是_。A工具 B过程 C方法 D环境(分数:2.50)A.B.C.D. 解析:解析 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的
21、技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。8.数据库系统在其内部具有 3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是_。A外模式 B概念模式 C内模式 D存储模式(分数:2.50)A.B. C.D.解析:解析 概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。9.将 E-R图转换到关系模式时,实体与联系都可以表示成_。A属性 B关系 C记录 D码(分数:2.50)A.B. C.D.解析:解析 E-R 图由实体、实体的属性和实体之间的联系 3个要
22、素组成,关系模型的逻辑结构是一组关系模式的集合,将 E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式,见下表。E-R模型与关系间的比较表E-R模型 关系 E-R模型 关系属性 属性 实体集 关系实体 元组 联系 关系10.某二又树中度为 2的结点有 10个,则该二叉树中有_个叶子结点。A9 B10 C11 D12(分数:2.50)A.B.C. D.解析:解析 根据二叉树的性质 3:对任何一棵二叉树,度为 0的结点(即叶子结点)总是比度为 2的结点多一个。11.以下叙述中正确的是_。AC 程序中注释部分可以出现在程序中任意合适的地方BC 程序的书写格式是固定的,每行只能写
23、一条语句C构成 C程序的基本单位是函数,所有函数名都可以由用户命名D在对 C语言程序进行编译时,可以发现注释行中的拼写错误(分数:2.50)A. B.C.D.解析:解析 本题考查的是 C语言程序设计的初步知识。选项 A,程序中/*/表示注释部分,注释只是给人看的,对程序的编译和运行不起作用,可以在程序中的任何位置;选项 B,C 语言的书写格式自由,一行可以写多条语句,一条语句也可以写在不同行上;选项 C,一个 C程序中必须有且只能有一个由“main”命名的主函数,其他函数由用户自行命名;选项 D,程序的注释仅仅是提供阅读之用,并不参与程序的编译,所以编译也就不会发现注释行中的错误。12.下列合
24、法的标识符是_。A12_3 B256 Ca.55 D_abhj(分数:2.50)A.B.C.D. 解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。“#”、“.”不允许出现在标识符中。13.以下不正确的转义字符是_。A Bd Cs D088(分数:2.50)A.B.C.D. 解析:解析 /是反斜线符,/d是整型变量转义字符,s是字符串型转义字符,C 语言中没有规定088为转义字符。14.下面程序的运行结果是_。y=5;x=14;y=(x=3*y,x+6),x-1);printf(“x=%d,y=%d“,x,y);Ax=27,y=27 Bx=12
25、,y=13 Cx=15,y=14 Dx=y=27(分数:2.50)A.B.C. D.解析:解析 本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式 1,然后依次求解表达式 2,直到表达式 N的值。整个逗号表达式的值就是最后一个表达式 N的值。表达式(x=3*y,x+6)中,x=15。表达式 y=x-1=14。15.sizeof(char)是_。A一种函数调用 B一个整型表达式C一个字符型表达式 D一个不合法的表达式(分数:2.50)A.B. C.D.解析:解析 sizeof(char)是一个 C语言的关键字,它不是函数调用。sizeof 的功能是计算出运算对象在计算机的内存中所占用的字
26、节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。16.下列 4个程序中,完全正确的是_。A#includestdio.hmain();/*programming*/printf(“programming!/n“);B#includestdio.hmain()/*/programming/*/printf(“programming!/n“);C#includestdio.hmain()/*/programming*/*/Dincludestdio.hmain()/*programming*/printf(“programming!/n“);(分数:2.50)A.B. C.D.解析:解
27、析 选项 A中,main 函数后面的分号是错误的,C 语言在函数名后面不能有分号。在 C语言中注释内容必须放在“/*”和“*/”之间,“/*”和“*/”必须成对出现,按语法规定在注释之间不可再嵌套“/*”和“*/”,选项 C的程序段中注释语句之间有嵌套。C 语言用#include 命令行来实现文件包含的功能,#include 命令行的形式为:#include“文件名”,选项 D中的 include前面少了一个#符号。17.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“,scanf(“%d“,if(x+2)printf(“%d“,x);else printf(“%d/n“,x-)
28、;A4 和 3 B4 和 2 C4 和 1 D3 和 2(分数:2.50)A. B.C.D.解析:解析 本题考查 if.else语句。首先,scanf 函数通过键盘读入 x的值。当 x=3时,第一个 if语句先判断条件,取 x的值 3和 2比较,然后将 x的值加 1,if 条件成立,执行下面的 printf语句,输出 x的值 4:当 x=2时,第一个 if语句先判断条件,先取 x的值 2和 2比较,然后将 x的值加 1(x的值变为 3),if 条件不成立,执行下面的 else语句,先输出 x的值 3,再将 x的值减 1。19.以下叙述中不正确的是_。A在不同的函数中可以使用相同的名字的变量B函
29、数中的形式参数是局部变量C在一个函数内定义的变量只在本函数范围内有效D在一个函数内的复合语句中定义的变量在本函数范围内有效(分数:2.50)A.B.C.D. 解析:解析 此题考查的是变量的作用范围。选项 D中,在一个函数的复合语句中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数体内都有效。20.有以下程序:#includestdio.hmain()char Chr20;scanf(“%S“,printf(“%S/n“,Chr);运行上面的程序,输入字符串 Microsoft Visual Studio,则程序的执行结果是_。AMicrosoft Visual Studi
30、o BMCMicrosoft DMicrosoftVisuaIStudio(分数:2.50)A.B.C. D.解析:解析 当从键盘输入 Microsoft Visual Studio时,由于 scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将 Microsoft这 9个字符送到了字符数组 str中,并在其后自动加上结束符“0”。21.若有“double a;“,则正确的输入语句是_。Ascanf(“%lf“,a); Bscanf(“%lf,Cscanf(“%lf“,(分数:2.50)A.B.C. D.解析:解析 scanf 函数的调用形式是:scanf(“格式字符串“,输入项地
31、址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。a 是 double型数据,格式字符串可以用%lf,%f 是浮点型。题中定义变量 a为双精度型变量,双精度变量的格式符为“if”;变量的地址用取地址符“elseif(ac)if(bd)x=6;else x=8;else x=9;else x=14;A9 B6 C 14 D4(分数:2.50)A.B. C.D.解析:解析 本题考查 if.else语句。第一个 if语句先判断条件,如果 ab 条件成立,则执行下面的语句;第二个 if语句,先判断条件,如果 cd 条件不成立,则执行与其配对的 else语句:第三
32、个 if语句,先判断条件,如果 ac 条件成立,则执行下面的 if语句;第四个 if语句,先判断条件,如果bd 条件成立,则 x=6,结束 If嵌套。23.若 i、j 已定义成 int型,则以下程序段中内循环体的总执行次数是_。for(i=6;i0;i-)for(i=0;j4,j+)A20 B24 C25 D30(分数:2.50)A.B. C.D.解析:解析 本题考查的是嵌套 for循环执行次数。对于外层 i的循环中任何一个 i,内层 j的循环中的 j都要从 0变化到 3,j=4 时退出循环;然后外层 i循环的 i减少 1,内层循环的 j仍要从 0变化到3,j=4 时退出循环直到外层 i循环的
33、 i变为 0,退出 i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。外层 for语句执行 6次,内层 for语句执行 4次,所以内循环体执行 6*4=24次。24.以下选项中非法的字符常量是_。A B/0201 C/xAA D0(分数:2.50)A.B. C.D.解析:解析 选项 A表示的是反斜杠字符;一般可用 13 位八进制数表示的字符常量,而选项 B中/0201有 4位八进制数,所以错误:选项 C是用两位十六进制数 AA表示的 ASCII码字符;选项 D表示的是字符 O对应的 ASCII码
34、值。25.以下程序的输出结果是_。#includestdio.hint m=13;int fun(int x,int y)int m=2;return(x*y-m);main()int a=7,b=6;printf(“%d“,fun(a,b)/m);A1 B3 C7 D10(分数:2.50)A.B. C.D.解析:解析 本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因此在 fun函数内 m的应该等于 2,main 中的 m为13,所以返回值为 7x6-2=40,而 fun(a,b)/m值为 40/13=3。26.下面
35、说法正确的是_。A调用函数时,实参不可以是表达式,必须是数值B调用函数时,实参与形参是共用内存单元的C调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等D调用函数时,实参与形参的类型可不一致,编译器能够自动转换(分数:2.50)A.B.C. D.解析:解析 本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式;实参将数值或表达式的值传递给形参,因此二者的类型必须保持一致。但是形参在运算过程中会发生改变,不一定会影响到实参值,所以可知二者不共用内存单元。27.已知下列函数定义:fun(int *b,int c,int n,int data)int k
36、;for(k=0;km*n;k+)*b=data;b+;则调用此函数的正确写法是(假设变量 a的说明为 int a50)_。Afun(*a,4,5,1); Bfun(Cfun(int*)a,4,5,1); Dfun(a,4,5,1);(分数:2.50)A.B.C.D. 解析:解析 本题考查函数调用时的参数传递。fun 函数的调用形式为 fun(int*b,int m,intn,int data),而调用数组时,用数组名表示一个指向数组第一个元素的指针,因此调用时的形式为 fun(a,4,5,1)。28.以下程序段的输出结果是_。#includestdio.hmain()char p4=“ABC
37、“,“DEF“,“GHI“);int i;for(i=0;i3;i+)puts(pi);AABCBADGCABCDEFGHIDABC(分数:2.50)A.B.C. D.解析:解析 本题首先定义了一个字符串数组 p,通过 for循环输出 p0、p1、p2的值。29.下面程序的运行结果是_。#includestdio.h#includestring.hmain()char*s1=“abDuj“;char*s2=“ABdUG“;int t;t=strcmp(s1,s2);printf(“%d“,t);A正数 B负数 C零 D不确定的值(分数:2.50)A. B.C.D.解析:解析 本题考查字符串比较
38、函数和字符串的比较原则的两个知识点。字符串的比较原则是依次比较两个字符串同一位置的一对字符,若它们的 ASCII码值相同,则继续比较下一对字符,若它们的 ASCII码值不同,则 ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部 i个字符与另一个字符串的前 i个字符相同,则字符串较长的较大。字符串的比较函数strcmp(s1,s2)的返回值,当 str1str2 时,返回值0;当 str1=str2时,返回 0;当 str1str2,返回值0。30.已知:int c34;,则对数组元索引用正确的是_。Ac14 Bc1.50 Cc1+00 D以上表达都错
39、误(分数:2.50)A.B.C. D.解析:解析 此题考查的是数组元素的引用。对于已定义的数组 aMN,数组元素的正确引用必须满足行下标小于 M,列下标小于 N,且为正整数。因此,选项 A中列下标溢出;选项 B中行下标出现小数;选项 C满足要求。31.以下程序:#includestdio.h#includestring.hmain()char str=“abcd/n/123/xab“;printf(“%d“,strlen(str);运行后的输出结果是_。A10 B9 C7 D14(分数:2.50)A.B.C. D.解析:解析 本题考查字符串的长度,需注意转义字符串。例如,“/n”表示换行,为一
40、个长度;“/123”表示 3位八进制数 123表示的字符,为一个长度;“/xab”表示二位十六进制数 ab表示的字符,也为一个长度。32.C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是_。A冠以关键字 extern B位置在函数体外部C作用范围是全程的 D位置在函数的外部(分数:2.50)A.B.C.D. 解析:解析 C 语言中允许用位置在函数外部的说明来指定变量、函数和其他标识符的特征。33.设已执行预编译命令#includestring.h,以下程序段的输出结果是_。char s=“abcdefg“;printf(“%d/n“,strlen(s);A7 B8
41、 C9 D10(分数:2.50)A. B.C.D.解析:解析 本题涉及求字符串的长度函数 strlen(s),其功能是:返回 s字符串中字符的个数,不包括字符串结束符,在字符串中间的空格也算一个长度。34.若有 char s33=“AAA“,“BBB“,“CCC“;说明语句,则与它等价的语句是_。Achar*s=“AAA“,“BBB“,“CCC“;Bchar*s3=“AAA“,“BBB“,“CCC“;Cchar s5=“AAA“,“BBB“,“CCC“;Dchar s3=“AAA“,“BBB“,“CCC“;(分数:2.50)A.B.C.D. 解析:解析 二维字符数组在定义时可省略第一维的维数,
42、根据初始化有 3个字符串,所以选项 D中数组有 3行,与已知说明语句等价。35.下列程序执行后的输出结果是_。void func(int *a,int b)b0=*a+6;main()int a,b5=0;a=0;b0=3;func(printf(“%d/n“,b0);A6 B7 C8 D9(分数:2.50)A. B.C.D.解析:解析 本题考查的是函数的实参和形参的传值方式。因为 func函数中 int b是地址值传递,所以 func函数中形参的改变会影响实参的改变,因此 main函数中输出的元素 b0的值即是在 func函数中的 b0=*a+6=6。36.若有如下说明,且 int类型占两个
43、字节,则正确的叙述为_。struct stint a;int b2;a;A结构体变量 a与结构体成员 a同名,定义是合法的B程序只在执行到该结构体时才为结构体 st分配存储单元C程序运行时为结构体 st分配 8字节存储单元D类型名 struct st可以通过 extern关键字提前引用(分数:2.50)A. B.C.D.解析:解析 本题主要考查结构体的用法:结构体变量 a与结构体成员 a同名,定义合法;在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间:int a占两个字节,int b2占 4个字节,共 6个;类型名 struct st不可以通过 e
44、xtern关键字提前引用。37.若有以下宏定义:#define N 2#define f(n)(N+1)*n)则执行语句 a=3*(N+f(5);后的结果是_。A语句有错误 Ba=51 Ca=80 Da 无定值(分数:2.50)A.B. C.D.解析:解析 本题考查带参数宏的运算:a=3*(N+f(5)=3*(2+(2+1)*5)=51。38.设有一联合体变量定义如下:union datalong a;float b;int c;char d;union data x;执行下列语句后,正确的联合体变量 x的值是_。x.a=111111;x.b=2222;x.c=2.1546;x.d=R;A11
45、1111 B2222 C2.1546 DR(分数:2.50)A.B.C.D. 解析:解析 本题主要考查的知识点是联合体的内存使用。联合体与结构体的定义相同,其本质区别就在于内存使用方式的不同。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元;联合体中的空间在某一时刻只能保持某一个成员的数据,所以本题执行完一系列赋值后,只得到最后执行的字符R。39.若 x=2,y=3,则 xint age;float p6;定义一个数组:struct a number10;假定文件已正确打开,不能正确地从文件中读入 10名工人数据到数组 b中的是_。Afread(b
46、,sizeof(struct a),10,fp);Bfor(i=O;i10;i+)fread(bi,sizeof(struct a),1,fp);Cfor(i=0;i10;i+)fread(b+i,sizeof(struct a),1,fp);Dfor(i=O;i5;i+=2)fread(b+i,sezeof(struct a),2,fp);(分数:2.50)A.B. C.D.解析:解析 数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,对 fread来说,它是读入数据的存放地址。对 fwrite来说,是要输出数据的地址。“size”是要读写的字节数;“count”是要进行读写多少个 size字节的数据项;“fp”是指文件型指针。选项 B中 bi是一个数组,不是指针,需