1、二级 C 语言笔试-49 及答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.设有程序段:int k=12;while(k=1) k=k-1;则下列描述中正确的是( )。(分数:2.00)A.while 循环执行 10 次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次2.若有说明语句:double *p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是 ( )。(分数:2.00)A.*p=scanf(“%1f“,p);B.*p=scanf(“%f“,p);C.p=scanf(“%1f“,*p);D.p=scanf
2、(“%1f“,p);3.设 x=015,则 x=x017 的值是( )。(分数:2.00)A.00001111B.11111101C.00000010D.110000004.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;char*p;p=a;for(p=a;pa+8;p+=2)putchar(*p);(分数:2.00)A.languageB.lnugC.有语法错误D.lang5.两次运行下列的程序,如果从键盘上分别输入 3 和 1,则输出结果是( )。main()int x;scanf(“%d“,该函数的类型是( )。
3、(分数:2.00)A.int 类型B.float 类型C.void 类型D.函数无类型说明,定义有错10.结构化程序设计的 3 种基本结构是( )。(分数:2.00)A.过程、子程序和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移11.字符串“/“ABCDEn“/“/“的长度是( )。(分数:2.00)A.15B.10C.7D.812.设有下列说明语句:strcut strint x;float y;char z;st;则下列的叙述中不正确的是( )。(分数:2.00)A.struct 是结构体类型的关键字B.st 是结构体类型名C.x、y、z 都是结构体成员名D.stru
4、ct str 是结构体类型名13.简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序14.对于长度为 n 的线性表,在最坏情况下,下列各种排序法所对应的比较次数中,正确的是( )。(分数:2.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/215.若有运算符: 、=、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为 ( )。(分数:2.00)A.%、sizeof、=B.sizeof、 %、 =、C.sizeof、 、%、=D.sizeof、%、=16.执行下列程序中的输出语句后,a 的值是( )
5、。main()int a;printf(“%d/n“,(a=2*3,a*5,a+7);(分数:2.00)A.17B.37C.6D.1317.下列选项中,不是一个算法的基本特征的是( )。(分数:2.00)A.完整性B.可行性C.有穷性D.拥有足够的情报18.下列程序的输出结果是( )。int f1(int x,int y)return xy?x:y;int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-fprin
6、tf(“%d,%d,%d/n“,e,f,g);(分数:2.00)_19.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表20.已知 int a=2,b=3;则执行表达式 a=ab 后,变量 a 的值为( )。(分数:2.00)A.0B.1C.2D.321.下列能正确定义一维数组的选项是( )。(分数:2.00)A.int a5=0,1,2,3,4,5;B.char a=0,1,2,3,4,5;C.char a=A,B,C);D.int a5=“0123“;22.下列程序的输出结果是( )。#inCludestdio
7、.hmain()char ch25=“1234“,“5678,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)for(j=0;pij/0;j+=2)s=pij-0;printf(“%d“,s);(分数:2.00)A.6357B.6135C.1357D.69135723.下列叙述中错误的是( )。(分数:2.00)A.在 C 语言中的保留字必须小写B.变量的存储类型决定了变量的存储位置及其生存期C.宏定义以#define 开头,行未必须加分号D.在 C 语言中的注释行可以出现在程序的任何位置24.已知有结构体:struct skint a;f
8、loat b;data,*p;若有 p=t=t-2;while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是( )。(分数:2.00)A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数37.下列程序中函数 reverse()的功能是将 a 所指数组中的内容进行逆置。#includestdio.hvoid reverse(int a,int n)int i,t;for(i=0;in/2,i+)t=ai;ai=an-1-i;an-1-i=t;main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,10);for(i=0;i
9、3;i+)s+=bi;printf(“%d/n“,s);程序运行后的输出结果是( )。(分数:2.00)_38.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是( )。main()float a,b,c,t;scanf(“%f,%f,%f“,a=b:b=t;if(ac)t=a;a=C;c=t;if(bc)t=b;b=c;c=t;printf(“%f/n%f/n%f/n“,a,b,c);(分数:2.00)A.1.00 2.003.00B.1.003.002.00C.132D.3.0000002.0000001.00000039.设有定义:int a=2,b=3,c=4;,则下列选项中值
10、为 0 的表达式是( )。(分数:2.00)A.(!a=1)i3;i+)if(i2)p1i=p1i-1;elsep1i=1;printf(“%d/n“,a01+a11+a12;(分数:2.00)A.8B.7C.12D.9二、填空题(总题数:15,分数:30.00)41.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于 1 中的一个阶段。(分数:2.00)填空项 1:_42.结构化分析方法是面向 1 进行分析的方法。(分数:2.00)填空项 1:_43.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示 1,用带空心圆的箭头表示传递的是数据。(分数:2.00
11、)填空项 1:_44.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接碟块,其中 1 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_45.诊断和改正程序中错误的工作通常称为 1。(分数:2.00)填空项 1:_46.x 和 y 都是 double 型变量,x 的初值为 4.0,y 的初值为 2.0,则表达式 pow(y.fabs(x)的值为 1。(分数:2.00)填空项 1:_47.若 x 为 int 类型,请写出与!x 等价的 C 语言表达式 1。(分数:2.00)填空项 1:_48.下列程序的运行结果是_。#inc
12、ludestdio.hmain()int a,b,c;a=3;b=4;c=5;if(ab)if(ac)printf(“%d“, a);else printf(“%d“, b);printf(“%d/n“, c);(分数:2.00)填空项 1:_49.下列语句能循环_次。int s=12;while(s);-S;(分数:2.00)填空项 1:_50.下列程序的运行结果是_。main()int a=1,b=10;dob-=a;a+;while(b-0);printf(“%d,%d/n“,a,b);(分数:2.00)填空项 1:_51.若定义#define PI 3.14159,则执行完下列程序后输
13、出结果是_。#definePI 3.14159;printf(“PI=%f,PI);(分数:2.00)填空项 1:_52.下列程序的输出结果是_。main()inta=31,27,20,12,6,1,*p=a;p+;printf(“%d/n“,*(p+2);(分数:2.00)填空项 1:_53.若有下列定义和语句:Char*s1=“12345“,*s2=“1234“;printf(“%d/n“,strlen(strcpy(s1,s2);则输出结果为_。(分数:2.00)填空项 1:_54.下列程序的运行结果是_。main()int i,a10;a0=a1=1;for(i=2;i5;i+)ai=
14、ai-2+ai-1;for(i=0;i5;i+)if(i%2=0)printf(“/n“);printf(“%d“,ai);(分数:2.00)填空项 1:_55.下列程序的输出结果是_。#includeStdio.hint fun(int x)int p;if(x=0x=1)return 3;elsep=x-fun(x-2);return p;void main()printf(“/n%d“,fun(11);(分数:2.00)填空项 1:_二级 C 语言笔试-49 答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.设有程序段:int k=12;
15、while(k=1) k=k-1;则下列描述中正确的是( )。(分数:2.00)A.while 循环执行 10 次B.循环是无限循环C.循环体语句一次也不执行 D.循环体语句执行一次解析:解析 本题考查 while 循环。while 循环的控制表达式 k=1 是个赋值表达式而不是逻辑表达式,所以循环体一次也不执行。2.若有说明语句:double *p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是 ( )。(分数:2.00)A.*p=scanf(“%1f“,p);B.*p=scanf(“%f“,p);C.p=scanf(“%1f“,*p);D.p=scanf(“%1f“,p);
16、解析:解析 double*p,a;语句表示定义了一个指向双精度型的指针变量 p 和双精度型变量 a,而语句p=pa+8;p+=2)putchar(*p);(分数:2.00)A.languageB.lnug C.有语法错误D.lang解析:解析 本程序首先定义了静态字符数组 a,然后将指针 p 指向数组 a 的首地址。第 1 次 for 循环,p=a,p 指向数组的第 1 个元素,*p 是取指针 p 所指地址的内容,输出 1;第 2 次 for循环,p=p+2,则 p 指向数组的第 3 个元素,*p 是取指针 p 所指地址的内容,输出 n;第 3 次 for 循环,p= p+2,则 p 指向数组
17、的第 5 个元素,*p 是取指针 p 所指地址的内容,输出 u;第 4 次 for 循环,p=p+2,则 p 指向数组的第 7 个元素,*p 是取指针 p 所指地址的内容,输出 g,结束循环。5.两次运行下列的程序,如果从键盘上分别输入 3 和 1,则输出结果是( )。main()int x;scanf(“%d“,该函数的类型是( )。(分数:2.00)A.int 类型 B.float 类型C.void 类型D.函数无类型说明,定义有错解析:解析 本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为 int 类型。10.结构化程序
18、设计的 3 种基本结构是( )。(分数:2.00)A.过程、子程序和分程序B.顺序、选择和重复 C.递归、堆栈和队列D.调用、返回和转移解析:解析 程序的 3 种基本控制结构包括顺序、选择和重复(循环),这 3 种结构就足以表达出各种其他形式的结构。11.字符串“/“ABCDEn“/“/“的长度是( )。(分数:2.00)A.15B.10 C.7D.8解析:解析 本题涉及字符串最基本的两个概念:字符串的长度是指字符串中字符的个数,但不包括字符串结束符;以反斜杠“/”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“/”连同后面的字符为
19、一个长度。12.设有下列说明语句:strcut strint x;float y;char z;st;则下列的叙述中不正确的是( )。(分数:2.00)A.struct 是结构体类型的关键字B.st 是结构体类型名 C.x、y、z 都是结构体成员名D.struct str 是结构体类型名解析:解析 本题主要考查结构类型的定义:struct 是结构体类型的关键字;struct str 是结构体类型名;x、 y、z 都是结构体成员名;st 是结构变量名。13.简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序 解析:解析 所谓的交换类排序方法是指借助数据元
20、素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。14.对于长度为 n 的线性表,在最坏情况下,下列各种排序法所对应的比较次数中,正确的是( )。(分数:2.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/2 解析:解析 在最坏情况下,冒泡排序和快速排序的比较次数都是 n(n-1)/2。所谓冒泡排序,就是将相邻的两个数据相比较,如前面的数据大于后面的,则位置互换。这样不停地比较、互换,其实就是把大的数往后排,小的数往前排(就像冒泡一样冒出来了)。15.若有运算
21、符: 、=、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为 ( )。(分数:2.00)A.%、sizeof、=B.sizeof、 %、 =、C.sizeof、 、%、=D.sizeof、%、= 解析:解析 主要考查运算符的优先级。sizeof 的优先级最高,后面的顺序是:%、,优先级最低的是“=”。16.执行下列程序中的输出语句后,a 的值是( )。main()int a;printf(“%d/n“,(a=2*3,a*5,a+7);(分数:2.00)A.17B.37C.6 D.13解析:解析 本题考查逗号表达式。本题的返回值是 a+7,a=2*3=6,a+7=13(注意:本题问的
22、是 a 的值,而不是程序的输出值)。17.下列选项中,不是一个算法的基本特征的是( )。(分数:2.00)A.完整性 B.可行性C.有穷性D.拥有足够的情报解析:解析 作为一个算法,一般应该具有 4 个特征:可行性,即考虑到实际的条件能够达到一个满意的结果;确定性,算法中的第一个步骤都必须是有明确定义的;有穷性,一个算法必须在有限的时间内做完;拥有足够的情报。18.下列程序的输出结果是( )。int f1(int x,int y)return xy?x:y;int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2
23、(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-fprintf(“%d,%d,%d/n“,e,f,g);(分数:2.00)_解析:解析 根据函数 int f1(int x,int y)return xy?x:y;和 int f2(int x,int y)return x)?y:x;19.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表 B.结性链表C.二叉链表D.有序线性链表解析:解析 二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。20.已知 int
24、a=2,b=3;则执行表达式 a=ab 后,变量 a 的值为( )。(分数:2.00)A.0B.1 C.2D.3解析:解析 先计算关系表达式 ab=23 为真(表达式为真时,如果变量为 int 型变量则真用 1 表示,假用 0 表示),即 a=1。21.下列能正确定义一维数组的选项是( )。(分数:2.00)A.int a5=0,1,2,3,4,5;B.char a=0,1,2,3,4,5; C.char a=A,B,C);D.int a5=“0123“;解析:解析 在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项 A 错误;选项 C 中定义的是一个字符变量 C;选项
25、D)中整型数组 a 中只能存储整型数据,而不能存储字符串常量“0123”。22.下列程序的输出结果是( )。#inCludestdio.hmain()char ch25=“1234“,“5678,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)for(j=0;pij/0;j+=2)s=pij-0;printf(“%d“,s);(分数:2.00)A.6357B.6135C.1357 D.691357解析:解析 本题先将指针 p 指向二维数组 ch25,相当于 p0=“1234“,p1=“5678“,通过双重for 循环,是要将 p 中的字符隔
26、一个输出一个,通过 s=pij-0这条语句是将所要输出的字符转换成相应的十进制数。23.下列叙述中错误的是( )。(分数:2.00)A.在 C 语言中的保留字必须小写B.变量的存储类型决定了变量的存储位置及其生存期C.宏定义以#define 开头,行未必须加分号 D.在 C 语言中的注释行可以出现在程序的任何位置解析:解析 本题涉及 C 语言最基本的 4 个知识点:C 语言的保留字必须小写;变量的存储类型不同,其存储位置和生存期也不一样;C 语言允许其注释部分出现在程序中的任何位置;宏定义以#define 开头,行末不需要加分号。24.已知有结构体:struct skint a;float b
27、;data,*p;若有 p=t=t-2;while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是( )。(分数:2.00)A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数 解析:解析 因为变量 t 的初始值等于 1,经过第一次 do while 循环中,执行 t=t-2 这条语句一次,所以变量 t 的值为-1,判断关系表达式 t!=n 是否成立,如果关系表达式成立,则执行第二次循环,再执行t=t-2 这条语句一次,所以变量 t 的值为-3,接着再判断关系表达式 t!=n 是否成立,如果关系表达式成立,执行第三次循环,否则退出循环。由此可知,所以只要输入变量 n 的值为负
28、奇数,则一定会使 t=n成立,则退出 do while 循环。37.下列程序中函数 reverse()的功能是将 a 所指数组中的内容进行逆置。#includestdio.hvoid reverse(int a,int n)int i,t;for(i=0;in/2,i+)t=ai;ai=an-1-i;an-1-i=t;main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,10);for(i=0;i3;i+)s+=bi;printf(“%d/n“,s);程序运行后的输出结果是( )。(分数:2.00)_解析:解析 本题考查函数调用时的参数传
29、递。函数 reverse 将数组 b 进行了逆置,此时的 b10=10,9,8,7,6,5,4,3,2,138.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是( )。main()float a,b,c,t;scanf(“%f,%f,%f“,a=b:b=t;if(ac)t=a;a=C;c=t;if(bc)t=b;b=c;c=t;printf(“%f/n%f/n%f/n“,a,b,c);(分数:2.00)A.1.00 2.003.00B.1.003.002.00C.132D.3.0000002.0000001.000000 解析:解析 本题考查 if 语句。第 1 个 if 语句,实现
30、如果 ab,则交换 a、b 值的功能;第 2 个 if 语句,实现如果 ac,则交换 a、c 的值的功能;第 3 个 if 语句,实现如果 bc,则交换 b、c 的值的功能。3 个 if 语句结合起来实现的功能就是将 a、b、c 按从大到小排序。39.设有定义:int a=2,b=3,c=4;,则下列选项中值为 0 的表达式是( )。(分数:2.00)A.(!a=1)i3;i+)if(i2)p1i=p1i-1;elsep1i=1;printf(“%d/n“,a01+a11+a12;(分数:2.00)A.8B.7 C.12D.9解析:解析 第 1 次执行 for 循环,p10=p10-1=3;第
31、 2 次执行 for 循环,p11=p11-1=4;第 3 次执行 for 循环,p12=1,最后输出的是 a01+a11+a12=2+4+1=7。二、填空题(总题数:15,分数:30.00)41.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于 1 中的一个阶段。(分数:2.00)填空项 1:_ (正确答案:软件开发)解析:解析 软件生命周期分为 3 个时期共 8 个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。42.结构化分析方法是面向 1 进行分析的方法。(分数:2.00)填空项 1:_ (
32、正确答案:数据流)解析:解析 结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。43.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示 1,用带空心圆的箭头表示传递的是数据。(分数:2.00)填空项 1:_ (正确答案:模块)解析:解析 矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。44.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接碟块,其中 1 的作用是将测试数据传送给被测试的模块,并显示被测
33、试模块所产生的结果。(分数:2.00)填空项 1:_ (正确答案:驱动模块)解析:解析 由于模块通常不是独立的程序,自己不能运行,而需要其他模块调用或驱动,同时被测试模块还要去调用其他模块,前者称为驱动模块,后者称为承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是代替被测模块,调用其他模块。45.诊断和改正程序中错误的工作通常称为 1。(分数:2.00)填空项 1:_ (正确答案:调试)解析:解析 程序设计的任务是诊断和改正程序中的错误。程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性、原因和位置;其二是对程序进行修
34、改,排除这个错误。46.x 和 y 都是 double 型变量,x 的初值为 4.0,y 的初值为 2.0,则表达式 pow(y.fabs(x)的值为 1。(分数:2.00)填空项 1:_ (正确答案:16.000000)解析:解析 函数运算不改变数据类型,所以结果也是 double 型,fabs(x)是对 x 取绝对值,pow(y,fabs(x)是 y 的 fabs(x)次幂,即 2.04.0(上标)=16.000000(注意:结果为 double 型)。47.若 x 为 int 类型,请写出与!x 等价的 C 语言表达式 1。(分数:2.00)填空项 1:_ (正确答案:x=0)解析:解析
35、 !x 的逻辑意思就是 x 为非,即 x=0。48.下列程序的运行结果是_。#includestdio.hmain()int a,b,c;a=3;b=4;c=5;if(ab)if(ac)printf(“%d“, a);else printf(“%d“, b);printf(“%d/n“, c);(分数:2.00)填空项 1:_ (正确答案:5)解析:解析 分析程序,当 a=3;b=4;c=5 时,判断语句 ab 不成立,所以不执行后面的语句,直接执行“printf(“%d/n“,c);”语句,输出 c 的值,输出结果为 5。49.下列语句能循环_次。int s=12;while(s);-S;(
36、分数:2.00)填空项 1:_ (正确答案:无限)解析:解析 分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以 s=12 保持不变,因此,没有条件限制的能循环无限次(即死循环)。50.下列程序的运行结果是_。main()int a=1,b=10;dob-=a;a+;while(b-0);printf(“%d,%d/n“,a,b);(分数:2.00)填空项 1:_ (正确答案:2,8)解析:解析 dowhile 语句的功能:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时 a=1,b=10,经过
37、操作 b-=a;a+后b=9,a=2,判断条件 b-0 不成立,退出循环,但 b 的值被减 1,因此结果为:a=2,b=8。51.若定义#define PI 3.14159,则执行完下列程序后输出结果是_。#definePI 3.14159;printf(“PI=%f,PI);(分数:2.00)填空项 1:_ (正确答案:PI=3.14159)解析:解析 本题先定义了一个宏名 PI,以后在程序中出现 PI 都用 3.14159 替代,但是 C 语言规定:双引号中的宏名是不进行替换的。52.下列程序的输出结果是_。main()inta=31,27,20,12,6,1,*p=a;p+;printf
38、(“%d/n“,*(p+2);(分数:2.00)填空项 1:_ (正确答案:12)解析:解析 本题考查如何用指针引用数组元素。分析程序,首先定义了一个指向数组 a 的指针 p,p 指向数组的首地址,通过 p+,将 p 指向 a1,p+2 是将指针后移 2 位指向 a3,*(p+2)即是取 a3的值12。53.若有下列定义和语句:Char*s1=“12345“,*s2=“1234“;printf(“%d/n“,strlen(strcpy(s1,s2);则输出结果为_。(分数:2.00)填空项 1:_ (正确答案:4)解析:解析 strcpy(s1,s2)函数的作用是将字符串 s2 中的内容复制到
39、字符串 s1 中,并将原来 s1 中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求 s2 字符串的长度,即是 4。54.下列程序的运行结果是_。main()int i,a10;a0=a1=1;for(i=2;i5;i+)ai=ai-2+ai-1;for(i=0;i5;i+)if(i%2=0)printf(“/n“);printf(“%d“,ai);(分数:2.00)填空项 1:_ (正确答案:1 1CR2 3CR5 (CR代表换行))解析:解析 本题通过语句“for(i=2;i5;i5;i+)ai=ai-2+ai-1;”将数组中前面两项的和赋值给数组当前元素,得到 a 的值
40、应为1,1,2,3,5)。语句 if(i%2=0)printf(“/n“)是要将数组中的元素以每行两个的形式输出。55.下列程序的输出结果是_。#includeStdio.hint fun(int x)int p;if(x=0x=1)return 3;elsep=x-fun(x-2);return p;void main()printf(“/n%d“,fun(11);(分数:2.00)填空项 1:_ (正确答案:4)解析:解析 本题考查函数的递归调用。在主函数中第 1 次调用子函数是调用的 fun(11),返回 11-fun(9);第 2 次调用子函数是调用的 fun(9),返回 9-fun(7);第 3 次调用子函数是调用的 fun(7),返回7-fun(5);第 4 次调用于函数是调用的 fun(5),返回 5-fun(3);第 5 次调用子函数是调用的 fun(3),返回 3-fun(1);第 6 次调用子函数是调用的 fun(1),返回 3。总的返回值是:11-(9-(7-(5-(3-3)=4。