1、(A)二级公共基础知识-3 及答案解析(总分:100.01,做题时间:90 分钟)一、单项选择题(总题数:40,分数:40.00)1.算法的时间复杂度是指_。A算法的长度B执行算法所需要的时间C算法中的指令条数D算法执行过程中所需要的基本运算次数(分数:1.00)A.B.C.D.2.以下数据结构中,属于非线性数据结构的是_。A栈 B线性表C队列 D二叉树(分数:1.00)A.B.C.D.3.数据结构中,与所使用的计算机无关的是数据的_。A存储结构 B物理结构C逻辑结构 D线性结构(分数:1.00)A.B.C.D.4.内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是_。A顺序内聚 B偶然
2、内聚C时间内聚 D逻辑内聚(分数:1.00)A.B.C.D.5.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的_。A连接码 B关系码C外码 D候选码(分数:1.00)A.B.C.D.6.检查软件产品是否符合需求定义的过程称为_。A确认测试 B需求测试C验证测试 D路径测试(分数:1.00)A.B.C.D.7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。A控制流 B加工C存储文件 D源和潭(分数:1.00)A.B.C.D.8.待排序的关键码序列为(15,20,9,30,67,
3、65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码 15 被放到第_个位置。A2 B3 C4 D5(分数:1.00)A.B.C.D.9.对关系 S 和关系 R 进行集合运算,结果中既包含关系 S 中的所有元组也包含关系 R 中的所有元组,这样的集合运算称为_。A并运算 B交运算C差运算 D除运算(分数:1.00)A.B.C.D.10.下列选项中,不属于数据管理员(DBA)职责的是_。A数据库维护 B数据库设计C改善系统性能,提高系统效率 D数据类型转换(分数:1.00)A.B.C.D.11.C 语言规定,在一个 C 程序中,main()函数的位置_。A必须在
4、系统调用的库函数之后 B必须在程序的开始C必须在程序的最后 D可以在任意位置(分数:1.00)A.B.C.D.12.以下叙述中正确的是_。AC 语言比其他语言高级BC 语言可以不用编译就能被计算机识别执行CC 语言以接近英语国家的自然语言和数学语言作为语言的表达形式DC 语言出现的最晚,具有其他语言的一切优点(分数:1.00)A.B.C.D.13.已知 int a=6;则执行 a+=a-=a*a;语句后,a 的值为_。A36 B0 C-24 D-60(分数:1.00)A.B.C.D.14.下列叙述中错误的是_。AC 语句必须以分号结束B复合语句在语法上被看作一条语句C空语句出现在任何位置都不会
5、影响程序运行D赋值表达式末尾加分号就构成赋值语句(分数:1.00)A.B.C.D.15.若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(X+y)%2/4 的值是_。A2.500000 B2.750000C3.500000 D0.000000(分数:1.00)A.B.C.D.16.若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是_。A+i; Bn1=(n2/(n3=2);Ck=i=j; Da=b+c=2;(分数:1.00)A.B.C.D.17.下列关于逻辑运算符两侧运算对象的叙述中正确的是_。A只能是整数 0 或 1 B只能是整数 0
6、或非 0 整数C可以是结构体类型的数据 D可以是任意合法的表达式(分数:1.00)A.B.C.D.18.若有说明 int a34;则 a 数组元素的非法引用是_。Aa02*1 Ba13Ca4-20 Da04(分数:1.00)A.B.C.D.19.下列说法不正确的是_。Aint *ptr;/指针指向整形数据Bchar *ptr;/指针的类型是字符型指针Cint *ptr;/于旨针的类型是双重指针Dint(*ptr)3;/是一个指针数组,数组共有三个元素,而三个元素是 int 型指针(分数:1.00)A.B.C.D.20.有以下程序#includestdio.hvoid main()char s=
7、“01aXy“;int i,n=0;for(i=0;si!=0;i+)if(si=asi=z)n+;printf(“%d/n“,n);程序运行后的输出结果是_。A0 B2 C3 D5(分数:1.00)A.B.C.D.21.有以下程序:#includestdio.hmain()int a=1,2,3,4,y,*p=a3;-p;y=*p;printf(“y=%d/n“,y);程序的运行结果是_。Ay=0 By=1Cy=2 Dy=3(分数:1.00)A.B.C.D.22.下面的 for 语句的循环次数为_。for(x=1,y=0;(y!=19)(x6);x+);A是无限循环 B循环次数不定C最多执行
8、 6 次 D最多执行 5 次(分数:1.00)A.B.C.D.23.下列程序的输出结果是_。#includestdio.hvoid main()int a=0,b=1,c=2;if(+a0+b0)+c;printf(“%d,%d,%d“,a,b,c);A0,1,2 B1,2,3C1,1,3 D1,2,2(分数:1.00)A.B.C.D.24.有以下程序:#includestdio.hmain()int c;while(c=getchar()!=/n)switch(c-3)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:pu
9、tchar(c+3);case 4:putchar(c+3);break;printf(“/n“);从第一列开始输入数据(CR代表一个回车符):3845CR,则程序输出结果为_。A77889 B77868C776810 D77886610(分数:1.00)A.B.C.D.25.C 语言规定,函数返回值的类型是_。A由调用该函数时的主调函数类型所决定B由 return 语句中的表达式类型所决定C由调用该函数时系统临时决定D由定义该函数时所指定的数值类型决定(分数:1.00)A.B.C.D.26.执行下列程序时输入 456空格789空格123回车,输出结果是_。#includestdio.hmai
10、n()char m80;int c,i;scanf(“%c“,c);scanf(“%d“,i);scanf(“%s“,m);printf(“%c,%d,%s/n“,c,i,m);A456,789,123 B4,789,123C4,56,789,123 D4,56,789(分数:1.00)A.B.C.D.27.已知下列函数定义:fun(int *b,int c,int d)int k;for(k=0;kc*d;k+)*b=c+d;b+;则调用此函数的正确写法是(假设变量 a 的说明为 int a10)_。Afun(*a,6,14); Bfun(a,6,8);Cfun(a,8,4); Dfun(i
11、nt)a,8,6);(分数:1.00)A.B.C.D.28.设 Y 为整型变量,A=1,A 的地址为 EF01;B=2,B 的地址为 EF02;执行语句 B=A;Y=b;后 Y 的值_。A1 B2CEF01 DEF02(分数:1.00)A.B.C.D.29.有以下程序:#includestdio.hint f(int t,int n);main()int a4=1,2,3,4,s;s=f(a,2);printf(“%d/n“,s);int flint t,int n)if(n0)(n5)return tn+1+f(t,n-1);else return 0;程序运行后的输出结果是_。A4 B7
12、C10 D6(分数:1.00)A.B.C.D.30.以下语句定义正确的是_。Aint a14=1,2,3,4,5;Bfloat a3=1,2,2,3,3,1;Clong a23=1,1,2,1,2,3,0,0);Ddouble a3=8;(分数:1.00)A.B.C.D.31.下列一维数组说明中,不正确的是_。Aint N;scanf(“%d“,N);int bN;Bfloat a=1,6,6,0,2;C#define S 10 Dint aS+5;(分数:1.00)A.B.C.D.32.下面函数的功能是_。sss(s,t)char *s,*t;while(*s)(*t)(*t+=*s+);r
13、eturn(*s-*t);A将字符串 s 复制到字符串 t 中 B比较两个字符串的大小C求字符串的长度 D将字符串 s 接续到字符串 t 中(分数:1.00)A.B.C.D.33.有以下程序:#includestdio.h#include“string.h“void fun(char *s,int n)char *t;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strlen(si)strlen(sj)t=si;si=sj;sj=t;main()char *ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“;fun(ss,5);p
14、rintf(“%s,%s/n“,ss0,ss4);程序的运行结果是_。Axy,aaaacc Baaaacc,xyCbcc,aabcc Daabcc,bcc(分数:1.00)A.B.C.D.34.若已定义:int a=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0i9,则对 a 数组元素不正确的引用是_。Aap-a B*(ai)Cpi Da10(分数:1.00)A.B.C.D.35.以下选项中可用作 C 程序合法实数的是_。A.1e0 B3.0e0.2CE9 D9.12E(分数:1.00)A.B.C.D.36.以下叙述中不正确的是_。A预处理命令行都必须以撑号开始,结尾不加分号B
15、在程序中凡是以#号开始的语句行都是预处理命令行CC 程序在执行过程中对预处理命令进行处理D预处理命令可以放在程序中的任何位置(分数:1.00)A.B.C.D.37.以下程序的输出结果是_。#includestdio.h#define F(x)2.84+x#define w(y)printf(“%d“,(int)(y)#define P(y)w(y)main()int x=2;P(F(5)*x);A12 B13 C14 D16(分数:1.00)A.B.C.D.38.设有下面的定义:struct stint a;float b;d;int *p;要使 p 指向结构变量 d 中的 a 成员,正确的赋
16、值语句是_。A*p=d.a; Bp=a;Cp=d.a; Dp=d.a;(分数:1.00)A.B.C.D.39.交换两个变量的值,不允许用临时变量,应该使用下列_位运算符。A B C D(分数:1.00)A.B.C.D.40.如果需要打开一个已经存在的非空文件“FILE”并进行修改,正确的语句是_。Afp=fopen(“FILE“,“r“); Bfp=fopen(“FILE“,“a+“);Cfp=fopen(“FILE“,“w+“); Dfp=fopen(“FILE“,“r+“);(分数:1.00)A.B.C.D.二、操作题(总题数:0,分数:0.00)三、程序填空题(总题数:1,分数:20.0
17、0)给定程序中,函数 fun 的功能是:对形参 s 所指字符串中下标为奇数的字符按 ASC码大小递增排序,并将排序后下标为奇数的字符取出,存入形参 p 所指字符数组中,形成一个新串。例如,形参 s 所指的字符串为:baawrskjghzlicda,执行后 p 所指字符数组中的字符串应为:aachjlsw。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。(分数:20.01)填空项 1:_填空项 1:_填空项 1:_四、程序修改题(总题数:1,分数:20.00)41.给定程序 MODI1.c 中函数 fun 的功能是:用
18、下面的公式求 的近似值,直到最后一项的绝对值小于指定的数(参数 num)为止:例如,程序运行后,输入 0.0001,则程序输出 3.1414。请改正程序中的错误,使它能输出正确的结果。注意:不要改动 smain 函数,不得增行或删行,也不得更改程序的结构!(分数:20.00)填空项 1:_五、程序设计题(总题数:1,分数:20.00)42.请编写一个函数 void fun(char a,char b,int n),其功能是:删除一个字符串中指定下标的字符。其中,a 指向原字符串,删除指定字符后的字符串存放在 b 所指的数组中,n 中存放指定的下标。例如,输入一个字符串:World,然后输入 3
19、,则调用该函数后的结果为:Word。注意:部分源程序在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。(分数:20.00)_(A)二级公共基础知识-3 答案解析(总分:100.01,做题时间:90 分钟)一、单项选择题(总题数:40,分数:40.00)1.算法的时间复杂度是指_。A算法的长度B执行算法所需要的时间C算法中的指令条数D算法执行过程中所需要的基本运算次数(分数:1.00)A.B.C.D. 解析:解析 算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作
20、量。2.以下数据结构中,属于非线性数据结构的是_。A栈 B线性表C队列 D二叉树(分数:1.00)A.B.C.D. 解析:解析 二叉树属于非线性结构。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作;队列可看作是插入在一端进行,删除在另一端进行的线性表。3.数据结构中,与所使用的计算机无关的是数据的_。A存储结构 B物理结构C逻辑结构 D线性结构(分数:1.00)A.B.C. D.解析:解析 数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。4.内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是_。A顺序内聚 B偶然内聚C时间内聚 D逻辑内聚(分数:1.
21、00)A.B. C.D.解析:解析 内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块为巧合强度模块。逻辑内聚这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。时间内聚这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。过程内聚如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。通信内聚这种模块除了具有过程内聚的特点外,还有另外一种关系,即它的所有功能都通过使用公用数据
22、而发生关系。顺序内聚如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。功能内聚如果一个模块包括为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起来是为了完成一个具体的任务,此模块则为功能内聚模块。5.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的_。A连接码 B关系码C外码 D候选码(分数:1.00)A.B.C.D. 解析:解析 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有
23、候选键中选取一个作为用户使用的键称为主键或主码。6.检查软件产品是否符合需求定义的过程称为_。A确认测试 B需求测试C验证测试 D路径测试(分数:1.00)A. B.C.D.解析:解析 确认测试的仃务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求。7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。A控制流 B加工C存储文件 D源和潭(分数:1.00)A. B.C.D.解析:解析 数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括 4 个方面,即加工、数据流、存储文件、源和潭。8
24、.待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码 15 被放到第_个位置。A2 B3 C4 D5(分数:1.00)A. B.C.D.解析:解析 选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素 9 放在第一个位置,元素 15 则放在第二个位置。9.对关系 S 和关系 R 进行集合运算,结果中既包含关系 S 中的所有元组也包含关系 R 中的所有元组,这样的集合运算称为_。A并运算 B交运算C差运算
25、D除运算(分数:1.00)A. B.C.D.解析:解析 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。10.下列选项中,不属于数据管理员(DBA)职责的是_。A数据库维护 B数据库设计C改善系统性能,提高系统效率 D数据类型转换(分数:1.00)A.B.C.D. 解析:解析 数据库管理员(DataBaseAdministratot,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:数据库设计。DBA 的主要任务之一是数据库设计,具体地说是进行数据模式的设计。数据库维护。DBA 必须对数据库中的数据安全性、完整性、并发控制及系统恢
26、复、数据定期转储等进行实施与维护。改善系统性能,提高系统效率。DBA 必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。11.C 语言规定,在一个 C 程序中,main()函数的位置_。A必须在系统调用的库函数之后 B必须在程序的开始C必须在程序的最后 D可以在任意位置(分数:1.00)A.B.C.D. 解析:解析 每个 C 程序有且只有一个主函数(main),且程序必须从 main()函数开始执行,而且 main()函数可以放在程序中的任意位置。12.以下叙述中正确的是_。AC 语言比其他语言高级BC 语言可以不用编译就能被计算机识别执行CC 语言以接近英语国家的自然
27、语言和数学语言作为语言的表达形式DC 语言出现的最晚,具有其他语言的一切优点(分数:1.00)A.B.C. D.解析:解析 此题考查的是 C 语言的基本特点。C 语言是一种高级编程语言,但并不是比其他语言高级;C 语言源程序必须经过编译生成目标文件才能被计算机识别执行;C 语言出现比较晚,它既有优点也有缺点,而并不是具有其他一切语言的优点。13.已知 int a=6;则执行 a+=a-=a*a;语句后,a 的值为_。A36 B0 C-24 D-60(分数:1.00)A.B.C.D. 解析:解析 此题考查的是赋值表达式。执行语句“a+=a-=a*a;”时,首先执行 a=a-a*a=-30,然后执
28、行 a=a+a=-60。14.下列叙述中错误的是_。AC 语句必须以分号结束B复合语句在语法上被看作一条语句C空语句出现在任何位置都不会影响程序运行D赋值表达式末尾加分号就构成赋值语句(分数:1.00)A.B.C. D.解析:解析 C 语言规定每条语句和数据定义的最后必须有一个分号,分号是 C 语句的必要组成部分。复合语句也称为“语句块”,其形式如下:语句 1;语句 2;语句 n;,即用一对大括号把若干语句括起来构成一个语句组。一个复合语句在语法上视为一条语句,在一对花括号内的语句数量不限。一个赋值表达式的最后加一个分号就成为一条语句,即赋值语句。空语句是只有一个分号的语句,它什么也不做,程序
29、设计中有时需要加一个空语句来表示存在一条语句,但随意加分号会导致逻辑上的错误,而且这种错误十分隐蔽,编辑器也不会提示逻辑错误,需要慎用。15.若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(X+y)%2/4 的值是_。A2.500000 B2.750000C3.500000 D0.000000(分数:1.00)A. B.C.D.解析:解析 此题考查的是变量的类型转换。表达式中(inl)(x+y)把 x+y=(7.2)的值强制转化成整型即得到 7,那么 a%3*(int)(x+y)%2 的值为整型常量 1,所以 a%3*(int)(x+y)%2/4
30、 的值为 0;因为变量 x 是浮点型变量,所以表达式 x+a%3*(int)(x+y)%2/4 的结果也是浮点型,得到 2.500000。16.若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是_。A+i; Bn1=(n2/(n3=2);Ck=i=j; Da=b+c=2;(分数:1.00)A.B.C.D. 解析:解析 本题考查赋值表达式。赋值表达式的一般形式是:变量名=表达式。C 语言规定,不能给变量表达式赋值。17.下列关于逻辑运算符两侧运算对象的叙述中正确的是_。A只能是整数 0 或 1 B只能是整数 0 或非 0 整数C可以是结构体类型的数据 D可以是任意合法的表达式(分数:1
31、.00)A.B.C.D. 解析:解析 逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为 0(“假”)。18.若有说明 int a34;则 a 数组元素的非法引用是_。Aa02*1 Ba13Ca4-20 Da04(分数:1.00)A.B.C.D. 解析:解析 此题考查的是数组元素的引用。对于已定义的数组 aMN,数组元素的正确引用必须满足行下标小于 M,列下标小于 N 且为正整数。此题中,选项 D 中列下标值出现溢出。19.下列说法不正确的是_。Aint *ptr;/指针指向整形数据Bchar *ptr;/指针的类型是字符型指针Cint *ptr;/
32、于旨针的类型是双重指针Dint(*ptr)3;/是一个指针数组,数组共有三个元素,而三个元素是 int 型指针(分数:1.00)A.B.C.D. 解析:解析 int(*ptr)3是一个数组指针,指针指向一个有 3 个 int 型变量的数组。20.有以下程序#includestdio.hvoid main()char s=“01aXy“;int i,n=0;for(i=0;si!=0;i+)if(si=asi=z)n+;printf(“%d/n“,n);程序运行后的输出结果是_。A0 B2 C3 D5(分数:1.00)A. B.C.D.解析:解析 这段程序的功能求出字符串 s 中字符的 ASC码
33、小于小写字符 a 并且大于小写字符 z 的字符的个数。因为小写字符 z 的 ASC码大于小写字符 a 的 ASC码,所以满足 a 的 ASC码并且大于 z 的的 ASC码的字符是不存在的,所以输出 0。21.有以下程序:#includestdio.hmain()int a=1,2,3,4,y,*p=a3;-p;y=*p;printf(“y=%d/n“,y);程序的运行结果是_。Ay=0 By=1Cy=2 Dy=3(分数:1.00)A.B.C.D. 解析:解析 程序首先定义了一个一维数组和指针,接着将数组第 4 个元素的地址赋给*p,进行-p 使指针 p 指向了数组的第 3 个元素;通过 y=*
34、p,将数组第 3 个元素的值 3 赋给了 y,所以选项 D 正确。22.下面的 for 语句的循环次数为_。for(x=1,y=0;(y!=19)(x6);x+);A是无限循环 B循环次数不定C最多执行 6 次 D最多执行 5 次(分数:1.00)A.B.C.D. 解析:解析 本题考查 for 循环。只考虑 x 的取值变化,x 从 1 取到 5,可以循环 5 次,但是并不知道 y是如何变化的,有可能出现 y=19 提前跳出循环的情况,所以是最多执行了 5 次。23.下列程序的输出结果是_。#includestdio.hvoid main()int a=0,b=1,c=2;if(+a0+b0)+
35、c;printf(“%d,%d,%d“,a,b,c);A0,1,2 B1,2,3C1,1,3 D1,2,2(分数:1.00)A.B.C. D.解析:解析 本题考查 if 语句。先判断 if 语句的条件是否成立,因为+a=10,所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行+b 操作,就可以直接得出整个表达式的值为逻辑 1,执行下面的+c。24.有以下程序:#includestdio.hmain()int c;while(c=getchar()!=/n)switch(c-3)case 0:case 1:putchar(c+4);
36、case 2:putchar(c+4);break;case 3:putchar(c+3);case 4:putchar(c+3);break;printf(“/n“);从第一列开始输入数据(CR代表一个回车符):3845CR,则程序输出结果为_。A77889 B77868C776810 D77886610(分数:1.00)A. B.C.D.解析:解析 题中 while 循环的条件是:当从键盘读入的字符不是/n时,执行 while 循环。输入第一个字符 3 时:执行 case 0,什么也不输出;case 1,输出 7;case 2,输出 7;遇到 break 语句,跳出switch 语句。输入
37、第二个字符 8 时:c-3=5,不执行任何语句。输入第三个字符 4 时:c-3=1,执行case 1。输出 8;case 2,输出 8;遇到 break 语句,跳出 switch 语句。输入第四个字符 5 时:c-3=2,执行 case 2,输出 9;遇到 break 语句,跳出 switch 语句。25.C 语言规定,函数返回值的类型是_。A由调用该函数时的主调函数类型所决定B由 return 语句中的表达式类型所决定C由调用该函数时系统临时决定D由定义该函数时所指定的数值类型决定(分数:1.00)A.B.C.D. 解析:解析 本题考查函数调用时的数值类型。函数调用时,函数返回值的类型既不由
38、主调函数类型所决定,也不由 return 语句中的表达式类型所决定,更不是由系统临时决定,而是由定义该函数时所指定的数值类型所决定。26.执行下列程序时输入 456空格789空格123回车,输出结果是_。#includestdio.hmain()char m80;int c,i;scanf(“%c“,c);scanf(“%d“,i);scanf(“%s“,m);printf(“%c,%d,%s/n“,c,i,m);A456,789,123 B4,789,123C4,56,789,123 D4,56,789(分数:1.00)A.B.C.D. 解析:解析 scanf 函数中的“%c”表示通过键盘只
39、读入一个字符型的数据,“c”表示将该数据赋值给 c,所以 c=4。另外,以“%d”格式读入数据时,只有遇到空格或者换行等间隔时符才停止读入,所以i=56,m=789。27.已知下列函数定义:fun(int *b,int c,int d)int k;for(k=0;kc*d;k+)*b=c+d;b+;则调用此函数的正确写法是(假设变量 a 的说明为 int a10)_。Afun(*a,6,14); Bfun(a,6,8);Cfun(a,8,4); Dfun(int)a,8,6);(分数:1.00)A.B.C. D.解析:解析 本题考查函数调用时的参数传递。fun 函数的调用形式为 fun(int
40、 *b,int c,int d)。调用数组时,用数组名表示一个指向数组的第一个元素的指针,因此调用时的形式为 fun(a,8,4)。28.设 Y 为整型变量,A=1,A 的地址为 EF01;B=2,B 的地址为 EF02;执行语句 B=A;Y=b;后 Y 的值_。A1 B2CEF01 DEF02(分数:1.00)A.B.C. D.解析:解析 main()int a4=1,2,3,4,s;s=f(a,2);printf(“%d/n“,s);int flint t,int n)if(n0)(n5)return tn+1+f(t,n-1);else return 0;程序运行后的输出结果是_。A4
41、B7 C10 D6(分数:1.00)A.B. C.D.解析:解析 本题主要考查的是函数的递归调用,子函数 f 是一个递归函数,所以主函数中执行 f(a,2)时,其执行过程是 a3+f(a,1)=a3+a2+f(a,0)=7。30.以下语句定义正确的是_。Aint a14=1,2,3,4,5;Bfloat a3=1,2,2,3,3,1;Clong a23=1,1,2,1,2,3,0,0);Ddouble a3=8;(分数:1.00)A.B.C.D. 解析:解析 本题考查如何对二维数组的元素赋值。选项 A,数组第二维的大小是 4,但是却赋值了 5 个元素,数组溢出;选项 B,C 语言规定,对于二维
42、数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;选项 C,数组第一维的大小是 2,但是赋值超过了 2;选项 D,在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。31.下列一维数组说明中,不正确的是_。Aint N;scanf(“%d“,N);int bN;Bfloat a=1,6,6,0,2;C#define S 10 Dint aS+5;(分数:1.00)A. B.C.D.解析:解析 本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名常量表达式。其中,“”中的内容可以是整型常量,也可以是整型表达式。选项 A 中的
43、N 是一个变量,所以错误。32.下面函数的功能是_。sss(s,t)char *s,*t;while(*s)(*t)(*t+=*s+);return(*s-*t);A将字符串 s 复制到字符串 t 中 B比较两个字符串的大小C求字符串的长度 D将字符串 s 接续到字符串 t 中(分数:1.00)A.B. C.D.解析:解析 *s-*t 的输出实际是比较两个字符的 ASC码值,比较两个字符串的大小。33.有以下程序:#includestdio.h#include“string.h“void fun(char *s,int n)char *t;int i,j;for(i=0;in-1;i+)for
44、(j=i+1;jn;j+)if(strlen(si)strlen(sj)t=si;si=sj;sj=t;main()char *ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“;fun(ss,5);printf(“%s,%s/n“,ss0,ss4);程序的运行结果是_。Axy,aaaacc Baaaacc,xyCbcc,aabcc Daabcc,bcc(分数:1.00)A. B.C.D.解析:解析 从 main 函数入手,定义了一个一维数组并赋初值,接着调用函数 fun(),函数的功能是:比较数组中各元素的长度,按元素长度从小到大的顺序排列元素,所以执行 fun(ss
45、,5)函数后,*ss=“xy“,“bcc“,“bbcc“,“aabcc“,“aaaacc“,所以调用 printf 函数输出 ss0,ss4的值分别为xy,aaaacc。34.若已定义:int a=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0i9,则对 a 数组元素不正确的引用是_。Aap-a B*(ai)Cpi Da10(分数:1.00)A.B.C.D. 解析:解析 此题考查对一维数组的引用。对于已定义的数组 aM,数组元素的正确引用必须满足下标小于 M 且为正整数。选项 D 中下标值出现溢出。35.以下选项中可用作 C 程序合法实数的是_。A.1e0 B3.0e0.2CE9 D9.12E(分数:1.00)A. B.C.D.解析:解析 C 程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母 e 或 E 之前必须