全国计算机等级考试二级C语言真题题库3+2015年9月

发布时间:2019-12-18 11:52:11   来源:文档文库   
字号:

全国计算机等级考试二级C语言真题题库3 2015年9月

(总分:43.00,做题时间:120分钟)

一、选择题(每小题1分,共40分)(总题数:40,分数:40.00)

1.下列叙述中正确的是( )。
(分数:1.00)

 A.程序可以作为算法的一种表达方式 

 B.算法的有穷性是指算法的规模不能太大

 C.算法的复杂度用于衡量算法的控制结构

 D.算法的效率与数据的存储结构无关

解析:[解析]算法的有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,故B选项错误。一个算法复杂度的高低体现在运行该算法所需要的计算机资源的多少,故C选项错误。算法的效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量,这就与算法本身设计的优劣以及具体的编程实现有关,数据的存储结构会极大的影响程序的执行时间,故D选项错误。算法在实现时需要用具体的程序设计语言来实现,所以程序可以作为实现算法的一种表达方式。故选A选项。

2.某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m-1,rear=m,则该循环队列中的元素个数为( )。
(分数:1.00)

 A.m-1

 B.1 

 C.m

 D.0

解析:[解析]循环队列长度为m,由初始状态为front=rear=m可知此时循环队列为空。入队运算时,首先队尾指针(rear)进1(即rear+1),然后在rear指针指向的位置插入新元素。特别的,当队尾指针rear=m+1时,置rear=1。迟队运算时,排头指针(front)进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,则该循环队列中的元素个数为m-(m-1)=1。故选择B选项。

3.能从任意一个节点开始没有重复地扫描到所有节点的数据结构是( )。
(分数:1.00)

 A.循环链表 

 B.双向链表

 C.二叉链表

 D.有序链表

解析:[解析]在单链表的第一个节点前增加一个表头节点,队头指针指向表头节点,最后一个节点的指针域的值由NULL改为指向表头节点,这样的链表称为循环链表。在循环链表中,只要指出表中任何一个节点的位置,就可以从它出发没有重复地扫描到表中其他所有的节点。双向链表与二叉链表都可以扫描到所有节点,但是会有重复。有序链表如果是单链表的情况下,不能扫描到所有节点。故A选项正确。

4.某棵树中共有25个节点,且只有度为3的节点和叶子节点,其中叶子节点有7个,则该树中度为3的节点数为( )。
(分数:1.00)

 A.不存在这样的树 

 B.7

 C.8

 D.6

解析:[解析]树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。首先假设这样的树是存在的,由于只有度为3的节点和叶子节点,可知最后一层都为叶子节点,倒数第二层一部分节点的度为3,一部分节点为叶子节点。节点总数为25,叶子节点有7个,则度为3的节点有18个,由于(34-1-1)/2<18<(35-1-1)/2可知,树共有5层,前三层有度为3的节点(34-1-1)/2=13个,第四层有34-1=27个节点,其中5个是度为3的节点,22个是叶子节点,此时与题目给出的叶子节点有7个相矛盾,故不存在这样的树。故选择A选项。

5.在最坏情况下,二分查找法的时间复杂度为( )。
(分数:1.00)

 A. word/media/image1.gif

 B. word/media/image1.gif

 C.log2n 

 D.n

解析:[解析]二分法查找也称拆半查找,能使用二分法查找的线性表必须满足两个条件,用顺序存储结构以及线性表有序。利用二分法查找元素X的过程如下:将X与线性表的中间项比较,如果X的值与中间项的值相等,则查找成功,结束查找;如果X小于中间项的值,则在线性表的前半部分以二分法继续查找;如果X大于中间项的值,则在线性表的后半部分以二分法继续查找。可以证明,对于长度为n的有序线性表,在最坏情况下,二分法查找需比较log2n次,故时间复杂度为log2n。故选择C选项。

6.某二叉树共有730个节点,其中度为1的节点有30个,则叶子节点个数为( )。
(分数:1.00)

 A.不存在这样的二叉树 

 B.351

 C.1

 D.350

解析:[解析]在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。对任何一棵二叉树,度为0的节点总是比度为2的节点多一个。如果有一棵二叉树,节点总数为730,假设度为0的节点个数为n,则有n+30+n-1=730,n=350.5,由于节点个数必须是整数,所以不可能存在题目中这样的二叉树。故选A选项。

7.软件开发中需求分析的主要任务是( )。
(分数:1.00)

 A.定义和描述目标系统“做什么” 

 B.获取需求

 C.给出软件解决方案

 D.需求评审

解析:[解析]需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求分析的任务是发现需求、求精、建模和定义需求的过程,是描述“做什么”的软件开发阶段。故选A选项。

8.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。
(分数:1.00)

 A.学生成绩管理系统

 B.ERP系统

 C.办公自动化系统

 D.UNIX系统 

解析:[解析]系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。D选项属于系统软件,A、B、C选项属于应用软件。故选D选项。

9.医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是( )。
(分数:1.00)

 A.多对多 

 B.一对一

 C.多对一

 D.一对多

解析:[解析]实体集之间通过联系来建立联接关系分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。由于医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,所以两者的联系属于多对多。故选A选项。

10.学生选课成绩表的关系模式是SC(S#,C#,G),其中S#为学号,C#为课号,G为成绩,检索课号为2且成绩及格的学生学号的表达式为( )。
(分数:1.00)

 A. word/media/image1.gif 

 B. word/media/image1.gif

 C. word/media/image1.gif

 D. word/media/image1.gif

解析:[解析]π表示针对属性进行的投影运算,σ表示针对元组进行的选择运算,∧表示交运算,∨表示并运算。要求检索结果为关系模式中的学生学号S#,首先在几种属性中选择学生学号πS#,其次要在其中选择满足条件的元组σ,条件是课号为2且成绩及格,即为“C#=2∧G≥60”,故完整表达式为霄πS#C#=2∧G≥60(SC))。本题选A选项。

11.若想定义int型变量a,b,c,d并都赋值为1,以下写法中错误的是( )。
(分数:1.00)

 A.int a=b=c=d=1; 

 B.int a=1,b=1,c=1,d=1;

 C.int a,b,c,d;a=b=c=d=1;

 D.int a,b,c,d=1;a=b=c=d;

解析:[解析]C语言赋值运算符的结合方向是从右向左,使用的变量必须已经定义了,int a=b=c=d=1;本条语句首先执行赋值运算d=1,由于b并未定义,故编译不通过,提示没有定义标识符b、c、d,故A选项错误。答案为A选项。

12.若有定义:char c;double d;程序运行时输入:1 2<回车>,能把字符1输入给变量c、数值2输人给变量d的输入语句是( )。
(分数:1.00)

 A.scanf("%d%lf",&c,&d);

 B.scanf("%c%lf",&c,&d); 

 C.scanf("%c%f",&c,&d);

 D.scanf("%d%f",&c,&d);

解析:[解析]%lf是针对double类型,如果仅用%f,输入的数据可能没有被完全接收,数据的精度可能不足,选项C、D错误。%f主要针对float类型的变量的输入,%d主要针对整型数据的输入,%c主要针对字符类型的数据的输入,选项A错误。故答案为B选项。

13.输出语句:printf(”%d\n“,11+011);的输出结果是( )。
(分数:1.00)

 A.20 

 B.22

 C.022

 D.021

解析:[解析]printf("%d\n",11+011),11为十进制,011为八进制形式,打印格式%d表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)=81×1+1×80=9,相当于printf("%d\n",11+9),故答案为20,A选项正确。

14.以下叙述正确的是( )。
(分数:1.00)

 A.有些算法不能用3种基本结构来表达

 B.C语言程序不编译也能直接运行

 C.结构化程序的3种基本结构是循环结构、选择结构、顺序结构 

 D.如果C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序

解析:[解析]算法的3种基本结构可以表达任何算法,只是不同的实现复杂度不相同,因此A选项错误。C语言是编译型语言,程序必须先编译、链接才能运行,因此B选项错误。C语言是高级程序语言,计算机不能识别除了机器语言以外的任何语言,因此C程序代码转换为机器语言才能在计算机上运行,因此选项D错误。答案为C选项。

15.若有定义:double x;,则表达式:x=0,x+10,x++的值是( )。
(分数:1.00)

 A.11.0

 B.10.0

 C.0.0 

 D.1.0

解析:[解析]C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的于表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k++表示先运算,后自加。前置自增运算:++k表示先自加,后运算。因此,表达式x=0,x+10,x++的计算过程为首先赋值x=0,然后将x加10,但是并不对x进行赋值,最后计算x++,并根据后置自增运算的计算结果,即为x=0.0。故答案为C选项。

16.有以下程序: word/media/image1.gif程序的运行结果是( )。
(分数:1.00)

 A.a=2,b=2

 B.a=2,b=1 

 C.a=1,b=1

 D.a=1,b=0

解析:[解析]C语言还提供了一种用于多分支选择的switch语句,计算判断条件的表达式的值,并逐个与case后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行相应case后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。 x=1;进入第一层switch,y=0;进入第二层switch,执行a++;break;后a=1;再进入case 2,(这里case1:没有break,)执行了a++,b++,由于存在break,则跳出switch,得到a=2,b=1,因此答案为B选项。

17.以下程序段中的变量已正确定义 for(i=0;i<4;i++,i++) for(k=1;k<3;k++);printf(”*”); 该程序段的输出结果是( )。
(分数:1.00)

 A.* 

 B.* * * *

 C.* *

 D.* * * * * * * *

解析:[解析]C语言约定分号为一条语句的结束。因此for(i=0;i<4;i++,i++)for(k=1;k<3;k++);是完整的语句,对printf();没有任何影响,最后printf("*"),执行一次。因此答案为A选项。

18.有以下程序: word/media/image1.gifword/media/image1.gif执行时输入:aBcDefG##<回车>,则输出结果是( )。
(分数:1.00)

 A.AbCdEFg

 B.ABCDEFG

 C.BCDEFGH 

 D.bcdefgh

解析:[解析]循环的作用是将输入的字符串转化为大写,getchar()每次读人一个字符,putchar()每次输出一个字符,当遇到并字符结束。putchar(++c),表示将字符变量c加1后输出。因此,输入aBcDefC##,得到的结果是BCDEFGH。故答案为C选项。

19.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.4

 B.2

 C.8 

 D.1

解析:[解析]在C语言中,在main函数后面定义函数,需要提前声明,否则调用报错,无法找到该函数。m=f(f(f(n))),一共调用3次f()函数,f()函数表示n*2,因此,结果是n*2*2*2,得到结果为8。故答案为C选项。

20.关于地址和指针,以下叙述正确的是( )。
(分数:1.00)

 A.可以通过强制类型转换让char型指针指向double型变量 

 B.函数指针p指向一个同类型的函数f时,必须写成:p=&f;

 C.指针p指向一个数组f时,必须写成:p=&f;

 D.一个指针变量p可以指向自身

解析:[解析]函数指针p指向一个同类型的函数f时,可以写成:p=f,而不能写成&f,B选项错误。函数名代表函数的人口地址,指针p指向一个数组f时,可以写成:p=f,也可写成&f,数组名f可以代表数组的首地址,C选项错误。指针变量指向的是地址,是个常量,不能将地址指向另一个地址,D选项错误。char型根据转化原则可以转化为double类型,因此答案为A选项。

21.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.34 

 B.35

 C.28

 D.59

解析:[解析]fun()函数求矩阵反对角线的元素之和。根据fun()函数,当数组的行列下标相等时,对该行反对角线上的元素求和。故结果为4+7+11+13=34,答案为A选项。

22.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.8

 B.6

 C.7 

 D.9

解析:[解析]fun()函数获取矩阵正反对角线的元素的最大值,fun()中for(i=0;i<N;i++) {j=N-(i+1);//反对角线列位置 {if(x[*r1][*r2]<x[i][j])| *r1=i; *r2=j;}//比较正反对角线的元素,使得*r1,*r2始终只在 //最大元素的位置 由数组元素可得,正反对角线的最大元素为7。答案为C选项。

23.对于以下函数声明 void fun(int array[4],int *ptr); 以下叙述中正确的是( )。
(分数:1.00)

 A.array,ptr都是指针变量 

 B.调用fun函数时,实参的值将逐一复制给array

 C.调用fun函数时,array按值传送,ptr按地址传送

 D.array是数组,ptr是指针,它们的性质不同

解析:[解析]void fun(int array[4],int *ptr);第一个参数虽然是数组类型,但是会退化为指针,并且形参数组的个数没有用。第二个参数是指针,因此实际上两个形参都是指针,传递的都是地址,而不是值。可知选项B、C、D错误。答案为A选项。

24.设有定义:int x[10],8p=x,i;,若要为数组x读入数据,以下选项正确的是( )。
(分数:1.00)

 A.for(i=0;i<10;i++)scanf(”%d“,p+i); 

 B.for(i=0;i<10;i++)scanf(”%d“,*p+i);

 C.for(i=0;i<10;i++)scanf(”%d”,*(p+i));

 D.for(i=0;i<10;i++)scanf(”%d”,x[i]);

解析:[解析]从scanf(“”,);可知scanf()的第二个参数是地址,因此,从4个答案中可以判断,只有选项A是p[i]的地址,其他的均是变量本身。故答案为A选项。

25.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.7

 B.0

 C.3 

 D.8

解析:[解析]题意统计字符s中阿拉伯数字的个数。char s[]=’012xy\08s34f4w2’;元素是字符型。’0’=48;而’\0’=0;因此可以计算出’\G’之前阿拉伯数字的个数,由字符串s可知,有3个阿拉伯数字。答案为C选项。

26.有以下程序段: word/media/image1.gifword/media/image1.gif以下选项中不能正确引用字符串的是( )。
(分数:1.00)

 A.*p[3] 

 B.p[3]

 C.str[2]

 D.*p

解析:[解析]”p[3]→p[3][0]是一个字符,不是字符串,选项A错误。p[3]和str[2]和*p分别代表了ddd,ccc,aaa。答案为A选项。

27.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.1,2,6,24,120, 

 B.1,2,3,4,5,

 C.1,1,1,1,1,

 D.1,2,4,6,8,

解析:[解析〕static静态变量只在声明时初始化一次。mul()函数定义了累乘,第一次init=1,init*=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五层init=24,val=5,因此结果为1,2,6,24,120。故答案为A选项。

28.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.-2,3, 

 B.-1,-2,

 C.-2,-3,

 D.-2,1

解析:[解析]fun()函数使用了静态变量,静态变量只在声明时初始化一次。首先实参的数值是-12,if判断后输出负号,并令n=12,计算k+=n%10→k+=2→2,因此输出2,然后将数值除以10,结果为1,递归调用fun()函数。第二次调用fun(),此时n=1,k=2,计算k+=n%10→k+=1→3,因此打印3。故最后打印结果为-2,3,。故答案为A选项。

29.有以下程序: word/media/image1.gifword/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.1,2,3,4,5,6,7,8,9,10, 

 B.10,9,8,7,6,5,4,3,2,1,

 C.2,3,1,6,8,7,5,4,10,9,

 D.10,9,8,7,6,1,2,3,4,5,

解析:[解析]结构体s中n代表数组的实际长度,a是个定长数组。函数f()对结构体s内的a数组元素使用冒泡法进行递增排序。因此最终数组的元素是一个递增序列。故答案为A选项。

30.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.Zhao,m,290,Zhao,m,290,Zhao,m,290,Sun,m,370 

 B.Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290

 C.Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370

 D.Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,290

解析:[解析]C语言函数参数传递分为两种情况。①值传递过程中,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。②地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。 题设中,参数b是地址传递,因此会直接影响实参变量。a,c是值传递,传递的是a,c的拷贝,不会对a,c实参产生影响,因此,调用函数返回,c没有被修改,b被修改了。故答案为A选项。

31.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.15

 B.12 

 C.16

 D.20

解析:[解析]#define命令是C语言的宏定义命令,标识符一般使用大写,为了与其他标识符区分,将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后置自增运算:k++表示先运算,后白加,意思是遇到k++了,先把当前k的值拿来参加运算,后面再去管它的自力D。SUB(a++,b++)→(a++)*(b++)→3*4。故答案为B选项。

32.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.1

 B.4

 C.0 

 D.3

解析:[解析]由结构体的定义初始化可知,a[0].x=4,a[0].y=3,a[1].x=2,a[1].y=1,因此计算a[0].y/a[0].x*a[1].x=3/4*2=(3/4)*2=0*2=0,放答案为C选项。

33.以下选项中的编译预处理命令行,正确的是( )。
(分数:1.00)

 A.#define E 2.38 

 B.##define PI_2 1.56

 C.#define int INT

 D.#DEFINE TRUE

解析:[解析]无参宏定义格式:#define标识符字符串,标识符与C语言规定相同,因此,可知选项B多了一个#,选项C使用了C语言的关键字,选项D格式不对。因此答案为A选项。

34.设有以下程序段: word/media/image1.gif要求输入字符串给结构体变量rec的title成员,错误的输入语句是( )。
(分数:1.00)

 A.scanf(”%s”,ptr.title); 

 B.scanf(”%s”,rec.title);

 C.scanf(”%s”,(*ptr).title);

 D.scanf(”%s”,ptr->title);

解析:[解析]符号“->”是指针特用的符号,“.”用于指定元素的成员。ptr是指针,只能用符号“->”,因此选项A错误。*p是指定元素(rec)可以使用“.”运算,因此选项D正确。选项B,rec.title代表数组title,同理选项C正确。答案为A选项。

35.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.?

 B.3.2G

 C.???? 

 D.?.2G

解析:[解析]两个类型相同的结构体,可以使用一个给另一个初始化,使它们相等。前提是结构体变量所有成员全部初始化了。pc1=pc2,pc2的成员值和pc1中对应的成员相等。因此pc1.CPU输出????。答案为C选项。

36.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.1,5 

 B.2,4

 C.2,6

 D.2,5

解析:[解析]a>>=1等价于a=a>>1,即a除以2,则a=2,b=(a>>1)+4=1+4=5,因此,打印出来为1,5。答案为A选项。

37.若要建立下图所示的存储结构,以下正确的程序段是( )。 word/media/image1.gif
(分数:1.00)

 A. word/media/image1.gif 

 B. word/media/image1.gif

 C. word/media/image1.gif

 D. word/media/image1.gif

解析:[解析]由图示可知,c是个普通变量,p指向c,因此p是指针,且p=&c,q指向p,但是p也是指针,因此q是指向指针的指针q=&p,因此定义是int** q,*p,c,q=&p,p=&c。答案为A选项。

38.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.2,3

 B.2,1 

 C.1,2

 D.3,1

解析:[解析]结构体tt是一个递归定义,类似于链表,通过成员变量y链接起来。p=s+1指向s[1]。p->y指向s[2],但现在p->y=s,因此s[2]=s[0],此时s[]={1.0,2.0,1.0},而p在s[1]位置,因此p->x为2,p=p->y,p指向s[2],因此p->x=1,故打印结果为2,1。答案为B选项。

39.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.3,5

 B.5,3 

 C.35,35

 D.8,8

解析:[解析]^运算符为按位异或运算符。即0^1=1,1^0=1,1^1=0,0^0=0;经计算可得x=x^y,y=x^y,x=x^y,作用是交换x,y的值。因此答案为B选项。

40.有以下程序: word/media/image1.gif程序运行后的输出结果是( )。
(分数:1.00)

 A.2 

 B.0

 C.1

 D.3

解析:[解析]*p=s,可得p指向s[0],p->y指向s[1],现p->y=s,因此p->y指向s[0]。因此p->x=1,++p->x等价于++(p->x),因此打印结果为2。答案为A选项。

二、程序填空题(总题数:1,分数:1.00)

41.函数fun的功能是:在有n个元素的结构体数组std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。例如,主函数中给出了4名学生的数据,则程序运行的结果为: 学号:N1002学号:N1006 共有2位学生有不及格科目 请在程序的下划线处填人正确的内容,并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 试题程序: word/media/image1.gifword/media/image1.gif
(分数:1.00)

__________________________________________________________________________________________
正确答案:((1) STU (2)|| (3)k)

解析:[解题思路] 填空1:STU结构体别名,通过main()函数中的语句可知。 填空2:||只要学生两门课成绩有不及格的,就算不及格,因此使用或运算。 填空3:k返回的是不及格的学生个数,有题意可知k是累计个数的。

三、程序修改题(总题数:1,分数:1.00)

42.给定程序MODI1.C中,函数fun的功能是判断整数n是否是“完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为“完数”。例如:6的因子包括1、2、3,而6=1+2+3,所以6是完数。如果是完数,函数返回值为1,否则函数返回值为0。数组a中存放的是找到的因子,变量k中存放的是因子的个数。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: word/media/image1.gifword/media/image1.gif
(分数:1.00)

__________________________________________________________________________________________
正确答案:((1)for(i=0;i<n;i++)改为for(i=1;i<n;i++) (2)k=m改为*k=m (3)if(t=0)改为if(t==0))

解析:[解题思路] (1)for(i=0;i<n;i++)改为for(i=1;i<n;i++),一个数的因子从1开始,不能从0开始。 (2)k=m改为*k=m,k为指针不能直接赋值整数,*k为指针指向的内容。 (3)if(t=0)改为if(t==0),括号内应为判断语句而不是赋值语句。

四、程序设计题(总题数:1,分数:1.00)

43.请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PR0G1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 给定源程序: word/media/image1.gifword/media/image1.gif
(分数:1.00)

__________________________________________________________________________________________
正确答案:(word/media/image1.gifword/media/image1.gif)

解析:[解题思路] 通过初始化指定最大值、最小值,再使用当前的最值与剩下的值比较,若比最大值大,修改最大值;若比最小值修改最小值。

本文来源:https://www.2haoxitong.net/k/doc/0d40afb1c381e53a580216fc700abb68a982adef.html

《全国计算机等级考试二级C语言真题题库3+2015年9月.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式