Chinaunix首页 | 论坛 | 博客
  • 博客访问: 801640
  • 博文数量: 455
  • 博客积分: 9776
  • 博客等级: 中将
  • 技术积分: 5870
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 23:23
文章分类

全部博文(455)

文章存档

2011年(455)

分类: C/C++

2011-05-26 15:26:11

20089月全国计算机等级考试二级笔试试卷

C语言程序设计

(考试时间90分钟,满分100分)

 

注意:解答中所提到的教材是新视野教育培训使用的教材《全国计算机等级考试--二级教程》,此教材是由新视野教学组编写,中国地质大学出版社出版。详情可联系长沙新视野0731--4458250 

 


1)栈的初始状态为空。现将元素12345ABCDE依次放入栈,然后再依次出栈,则元素的顺序是:

A) 12345ABCDE   B) EDCBA54321 

C) ABCDE12345   D) 54321EDCBA

答案:B

详细解答:该知识点是考查了栈的先进后出,是我们公共基础的重点考点,在公共基础的10页纸上多次强调。栈和队列是每年必考的题目。

此题与对应教材第三分册8114题。

 

2)下列叙述中正确的是

A)循环队列有对头和对尾两个指针,因此,循环队列是非线性结构

B)在循环队列中,只需要队列头指针就能够反映队列中元素的动态变化情况

C)在循环队列中,只需要队列头指针就能够反映队列中元素的动态变化情况

D)循环队列中的元素的个数是有队头和队尾指针共同决定的。

答案:D

详细解答:该知识点是考查了循环队列的知识点,队列是线性结构。处理队列的话我们是有两个指针的,一个是头指针,一个是尾指针。

此题与对应教材第三分册8110题。(类似)

 

3) 在长度为n的有序线性表中进行二分查找,最坏的情况下需要比较的次数是

A)O()  B)O(2)    C)O(log2n)      D)O(nlog2n)

答案:C

详细解答:该知识点是考查了二分查找。二分查找:对于长度为n的线性表,在最坏情况进行 log2n次。

此题与对应教材第三分册8332题。

 

4)下列叙述中正确的是

A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的。

B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构。

C)顺序存储结构能存储有序表,链式存储结构不能存储有序表。

D)链式存储结构比顺序存储结构节省空间。

答案:A

详细解答:该知识点是考查了栈数据结构特点。

此题与对应教材第三分册8118题。

 

5)数据流图中带有箭头的线段表示的是

A)控制流  B)事件驱动 C)模块调用  D)数据流

答案:D

详细解答:该知识点是考查了数据流图中的各个知识点。

此题与对应教材第三分册8611题。

 

6)在软件开发中,需求分析阶段可以使用的工具是

AN-S图  BDFD图   CPAD图 D)程序流程图  答案:B

此题与对应教材第三分册8712题。

 

7)在面向对象方法中,不属于“对象”基本特点的是

A) 一致性  B)分类性  C)多态性  D)标识一致性  答案:A

详细解答:该知识点是考查了对象的基本属性。是我们公共基础的重点考点,

此题与对应长沙新视野考前冲刺07年4月题目4题。

 8)一间宿舍可以住多个学生,则实体宿舍和学生之间的联系是

A ) 一对一   B) 一对多  C)多对一 D)多对多 答案:B

此题与对应教材第三分册9010题。(类似)

 

9)在数据管理技术发展的三个阶段中,数据共享最好的是

A)人工管理阶段   B)文件系统阶段 

C)数据库系统阶段  D)三个阶段相同

答案:C 此题与对应教材第三分册907题。

 

10)有三个关系SRT如下:

 

由关系RS通过运算得到关系T,则所使用的运算为

A)笛卡尔积   B)交 C)并 D)自然连接

答案:D

详细解答:该知识点是考查了关系的运算,是我们公共基础的常考的题目。考试中一般比较多的是考到了笛卡尔积、交。这个地方考了自然连接的运算。

此题与对应教材第三分册9121题。

 

11)以下叙述中正确的是(

A) C语言的基本组成单位是语句

B) C程序中的每一行只能写一条语句

C) 简单C语句必须以分号结束

DC语句必须在一行内完成

答案:C

详细解答:本题考查了C语言的基本概念,基本语法,本题所有选项均可在第一分册找到原句

A)选项错误:函数是C语言的基本组成单位(第一分册P55

B)D)选项错误: C语言书写格式自由,一行内可以写多个语句,一个语句可以多行书写(第一分册P3

C)选项正确:分号是语句结束的标志,任何一条语句都必须以分号结束.

把以一个分号结尾的一句话叫做一个C语言的语句(第一分册P2,P3

 

12)计算机能直接执行的程序是(

A)源程序   B)目标程序   C)汇编程序   D)可执行程序  答案:D

详细解答:根据我们上机运行的操作步骤,此题就可以选出答案

C语言编写的程序,称之为源程序,后缀为.c,通过C语言编译,变为后缀为.obj的文件,然后链接成后缀为.exe的可执行文件,才能交给计算机执行,可见计算机能直接执行的是可执行程序。

汇编语言编写的程序,机器不能直接识别,要翻译成机器语言(可执行语言),才能执行(考生即使不知道该知识点,此题也应该选出答案)

此题与第三分册68页第20题,第23题考查知识点相近。

 

13)以下选项中不能作为C语言合法常量的是 (  )

A)  cd   B) 0.1e+6   C) a  D)‘\011

答案:A

详细解答:本题考查了字符常量,实型常量、字符串常量。字符常量是一对单引号括起来的一个字符,A选项单引号内有两个字符,注意D选项为八进制转移字符(第一分册P48)此题在第三分册第2页,第18题、第20题;第22页第3题,第5题均有体现

 

14)  以下选项中正确的定义语句是

A)double a;b;   B) double a=b=7;  C) double a=7,b=7;  Ddouble ,a,b; 答案:C

详细解答:本题考查变量的定义,以及初始化(定义变量的同时赋值,比如C选项)

A)选项错误:在同一条语句中定义多个变量,变量之间用逗号, eg:double a,b; 如果作为两条语句定义,变量类型不能省略,eg:double a;double b;

B)选项错误:变量b未定义,正确格式为 double a,b;a=b=7;

D)选项错误:变量类型与变量之间不能有逗号,只能是空格 eg: double a,b;

此题对应第三分册第3页,第28

 

15)  以下不能正确表示代数式 C语言表达式是(

A)  2*a*b/c/d   B)  a*b/c/d*2  C)  a/c/d*b*2   D 2*a*b/c*d 答案:D

详细解答:本题考查了代数式在C语言中的书写格式

D)选项相当于代数式

此题并不难理解,但如果题目给出变量a,b,c,d的变量类型,就需要大家细心,可以参考第三分册第3页第34

 

16)  C源程序中不能表示的数制是  

A)  二进制 B)  八进制 C)  十进制

D)  十六进制 答案:A

详细解答:本题考查了整型常量的三种表示形式

整型常量分为十进制整型常量、八进制整型常量、十六进制整型常量,唯独没有二进制整形常量,所以源程序中不能表示二进制

此题对应第三分册第2页,第14题(注意D选项)

 

17)  若有表达式(w)(--x)(++y),则其中与w等价的表达式是 (  )

Aw==1   B) w==0  C) w! =1  D) w! =0

答案:D

详细解答:本题考查了逻辑表达式的真假

题目中w1,表达式w表示真,w0,表达式w表示假,这类题目的做法,把1,0代入选项,找出与w真假条件相符的即可

比如:D选项, w1时,1=0成立,表达式值为真w0时,0=0部成立,表达式值为假

此题对应第三分册第10页,第2题,第8题,第12页,第22

 

18) 执行以下程序段后,w的值为

    int w=A,x=14,y=15;

    w=((x||y)&&(w<a));

A-1   B)NULL  C) 1  D)0  答案:C

详细解答:本题考查了逻辑表达式的判断

&&两边都为真,表达式才为真;||两边有一个为真就为真.x||y)值为真,(w<a’)成立,也为真,整个表达式((x||y)&&(w<a))值为1,1赋值给w, w的值为1

此题没有考察学员容易犯错的--逻辑运算符的短路现象,可以参考第三分册11页,第14

 

19) 若变量已正确定义为int型,要通过语句scanf(%d,%d,%d,&a,&b,&c);a赋值1,给b赋值2,给c赋值3,以下输入形式中错误的是(ㄩ代表一个空格符)()

A)ㄩㄩㄩ1,2,3<回车>          B)123<回车>

C) 1,ㄩㄩㄩ2,ㄩㄩㄩ3<回车>     D)1,2,3<回车>

答案:B

详细解答:本题考查了scanf输入函数的格式说明知识

输入函数的输入控制(双引号之间的内容),除 %* ,如果含有其它字符,则在输入数据时一定要一一对应输入这些字符,此题双引号之间含有逗号,那么输入数据之间必须输入逗号,B选项错误.此类型的题目还要注意逗号不是分隔符,如果双引号之间没有逗号,输入数据时不能用逗号

此题对应第三分册第822

 

20) 有以下程序段

int  a,b,c;

a=10;b=50;c=30;

if(a>b) a=b,b=c; c=a;

printf(a=%d b=%d c=%d,a,b,c);

程序的输出结果是   

Aa=10 b=50 c=10   B)a=10 b=50 c=30  C) a=10 b=30 c=10 D) a=50 b=30 c=50

答案:A

详细解答:本题目学员应该注意逗号表达式语句,及if语句的结构

属于ifa>b)的只有一条语句a=b,b=c;(逗号表达式语句)

咱们强调如果含有多条语句,必须用大括号{ }括起,eg:if(a>b) { a=b,b=c; c=a;}

如果没有用 { }括起,那么只有一条语句,10>50不成立,所以a=b,b=c;不执行;执行后面的语句c=a;此时c的值变为10,所以输出为A选项

  此题对应第三分册13页填空题第3

 

21)   若有定义语句:int

m[ ]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是(

Am[--i]   B)m[2*2]  C) m[m[0]]  D)m[m[i]]

答案:C

详细解答:本题考查了数组的下标不能越界,数组长度由{ }中的数据个数默认为5,那含有5个数组元素分别为m[0]m[1]m[2]m[3]m[4]C)选项为m[5],下标越界

A) 选项对应m[3]    B) 选项对应m[4]   D)选项对应m[1]

此题知识点在 第一分册72页第一行 明确表明

 

22)   下面的函数调用语句中func函数的是实参个数是 

func( f2(v1,v2)), (v3,v4,v5),(v6,max(v7,v8)));

A3   B)4  C) 5  D8

答案:A

详细解答:函数的参数列表,不同参数之间用逗号隔开, func函数的参数个数为3,分别为f2(v1,v2))(v3,v4,v5)(v6,max(v7,v8))。大家可以简单的理解为以外层逗号间隔为准,其中每个参数又含有函数和多个参数,超出本题查考的内容

 

23)   若有定义语句:double x[5]={1.0, 2..0, 3.0, 4.0, 5.0},*p=x; 则错误引用x数组元素的是

A*p   B)x[5]  C)*(p+1)  D*x

答案:B

详细解答:本题考查数组的下标是否越界,以及指针对变量的引用

B)选项x[5],下标越界。一维数组名是地址常量(数组首地址),始终指向第一个数组元素,进行赋值p=x,指针变量p也指向第一个数组元素如下图:  

                       

   

A)选项 *p表示p所指向单元的数据即x[0] 值为1.0

C)选项 *(p+1)表示p+1所指向单元的数据即x[1] 值为2.0

D)选项 *x表示x所指向单元的数据即x[0] 值为1.0

此题目在第三分册40页第九章的的题目中均有体现,比如第3

 24)若有定义语句: char  s[10]=1234567\0\0; ,strlen(s)的值是

A7   B)8  C) 9  D10

答案:A

详细解答:本题目考查字符串结束标志’\0。字符串从第一个字符开始,遇到第一个结束符’\0为止,注意’\0不占字符串长度,所以此题选A

此题对应第三分册60页填空题第29

 

25)  以下叙述中错误的是

A)用户定义的函数中可以没有return 语句

B) 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C) 用户定义的函数中若没有return语句,则应当定义函数为void类型

D)函数的return语句中可以没有表达式

答案:B

详细解答:

1、如果函数返回值类型为void,则可以不用return语句,所以A正确;

2、如果函数没有return语句,函数返回值类型必须是void

3、如果函数没有返回值,可以用return语句,此时表达式应该为空,D正确

4、函数可以根据需要返回一个确定的值,程序中可以出现多个return语句,但当程序执行到第一个return语句时,就会结束当前函数的运行,不会执行后面的语句,所以用return语句只能返回一个函数值,B错误

此题对应第一分册56页:return说明部分

 

26) 以下关于宏的叙述中正确的是

A)宏名必须用大写字母表示

B) 宏定义必须位于源程序中所有语句之前

C) 宏替换没有数据类型限制

D)宏调用比函数调用耗费时间

答案:C

详细解答:本题考查宏的基本定义

A) 选项错误:宏名一般习惯用大写,但可以用小写

B)选项错误:预处理命令可以出现在任何位置,但习惯上应尽可能地写在源程序的开头.

C) 选项正确:宏定义时形参不能指定类型,即没有数据类型限制

D) 选项错误:宏替换在编译时由预处理程序完成,所以宏替换不占用运行时间;而函数调用是在程序运行中处理的,要临时分配存储单元,占用一系列时间

此题对应第三分册66页第8题,及第一分册99页和100页相关知识

 

27)   有以下程序

#iinclude

main()

{  int i,j;

for(i=3; i>=1; i--)

{ for (j=1;j<=2;j++)  printf(%d,i+j);

      printf(\n);

}

}

程序的运行结果是  

A) 2 3 4    B) 4 3 2   C) 2 3    D) 4 5

3 4 5       5 4 3         3 4       3 4

                          4 5       2 3

答案:D

详细解答:本题考查双层for循环嵌套

i值为3时,  j1,输出4

            j2,输出5

            j3时,不满足条件

退出内层循环,执行后面的语句

换行

i值为 2时, j1,输出3

            j2,输出4

            j3时,不满足条件

退出内层循环,执行后面的语句

换行

i值为 1时, j1,输出2

            j2,输出3

            j3时,不满足条件

退出内层循环,执行后面的语句

换行

i值为 0时,不满足判断条件退出整个for循环

此题对应第一分册44 4.6

 

28)   有以下程序

#include

main()

{  int  x=1,y=2, z=3;

     ifx>y

     if (y%d,++z);

     else     printf(%d,++y);

     printf(%d\n,x++);

}

程序运行结果是

A331   B)41  C) 2 D1

答案:D

详细解答:本题考查if if-else结构

首先搞清楚此题目的结构,本题含有一个if结构,属于if的语句是一个if-else结构,if (y%d,++z);

   else     printf(%d,++y);  这是本题的关键

首先判断x>y不成立,那么属于if(x>y)的语句不执行,直接执行后面的语句printf(%d\n,x++);输出1(本题还有一个考查点就是++在前在后的问题,如果题目改为++x,输出2

此题对应第一分册31 3.10

 

29)   有以下程序

#include

main()

{  int  i=5;

    do

     {   if (i%3= =1) 

            if (i%5= =2)

            {printf(*%d,i); break; }

         i++;

}while(i!=0);

printf(\n);

}

程序的运行结果是

A*7   B)*3*5  C) *5 D*2*6

答案:A

详细解答:此题头考查了break的用法,遇到break退出整个循环

明确循环体中的语句,当i的值满足(i%3= =1) 并且满足(i%5= =2)时,输出*i. 并且break;退出整个循环,如果不满足就i++

本题目题意就是:输出第一个满足(i%3= =1) 并且满足(i%5= =2)i

i自加到7时,满足题目要求,输出*7,然后退出整个循环,执行后面的语句

联想此题还要注意continue的用法

可以参考第三分册1815题,19 19

 

30)   有以下程序

#include

int  fun(int a, int b)

{ if(b= =0) return  a;

  else  return(fun(--a,--b)) ;

}

main()

{  printf(%d\n,fun(4,2);  }

程序的运行结果是

A1  B)2  C) 3  D4

答案:B

详细解答:此题考查了函数的简单递归调用

主函数中调用fun(42)fun(4,2)中调用fun(3,1),fun(3,1)中调用fun(2,0)

可以总结为以下结构

 main(  )

         àfun(4,2)

                   ->fun(3,1)

                            ->fun(2,0)

 输出2     返回2    返回2    返回2

此题对应参考第三分册66页第7题,第6

 

(31) 有如下程序:

   #include

   #include

int fun(int n)

{ int *p;

  p=(int *)malloc(sizeof(int));

  *p=n; return *p;

}

main()

{

int a;

a=fun(10); printf("%d\n",a+fun(10));

}

程序的运行结果是

   A)0    B)10   C)20   D)出错

答案:C

详细解答:该知识点考察的是函数的调用以及引用指针存储单元,也是我们平时上课强调了的知识点。在主函数调用fun函数,实参10单向值传递给形参n,fun定义了指针变量p并用malloc函数给p分配了存储空间,然后下一条语句把n的值赋给p所指向的存储单元,最后是返回存储单元的值到主函数。所以调用fun(10)的返回值为10a的值也为10, C

此题与对应教材类似第三分册256题。

 

32)有如下程序:

   #include

   void fun(int a,int b)

   {

      int t;

       t=a;a=b;b=t;

   }

   main()

   {int c[10]={1,2,3,4,5,6,7,8,9,0},i;

    for(i=0;k<10;i+=2) fun(c[i],c[i+1]);for(i=0;k<10;i++)printf("%d",c[i]);printf("\n");

   }

   程序的运行结果是

   A)1,2,3,4,5,6,7,8,9,0,   B)2,1,4,3,6,5,8,7,0,9, 

   C)0,9,8,7,6,5,4,3,2,1,   D)0,1,2,3,4,5,6,7,8,9,

答案:A

详细解答:该知识点考察的是函数实际参数与形式参数的传递过程,是我们上课强调的重点内容。该题没有涉及到指针,实参单向的值传递给形参,形参反过来不能传递给实参。在主函数中把数组元素作为实参进行传递给形参ab,在fun中交换了形参ab的值,但形参ab值的改变并不影响实参。所以数组C中的元素没有改变。选A

此题与对应教材类似第三分册479.

 

33)有如下程序:

#include

struct st

{int x,y;} data[2]={1,10,2,20};

main()

{struct st *p=data;

printf("%d",p->y);

printf("%d\n",(++p)->x);

}

程序的运行结果是

   A)10,1  B)20,1    C)10,2       D)20,2

答案:C

详细解答:该知识点考察的是结构体成员的引用,是我们上课强调的重点内容。在主函数中把一维数组名data赋给了指针变量p,则p指向数组元素data[0],且每一个数组元素含有两个成员xy,所以表达式p->y 是引用data[0]的成员y,即等于10(++p)->x是先让指针值自增,往下移动指向了data[1],然后引用data[1]的成员x, 即等于2。选C

此题与对应教材类似第三分册715.

 

34)有如下程序:

#include

void fun(int a[],int n)

{ int i,t;

for(i=0;i

}

main()

{int k[10]={1,2,3,4,5,6,7,8,9,10},i;

fun(k,5);

for(i=2;i<8;i++) printf("%d",k[i]);

printf("\n");

}

程序的运行结果是

 A)345678 B)876543    C)1098765       D)321678

答案:D

详细解答:该知识点考察的是一维数组名作为实参进行参数传递,是我们上课强调的重点内容。在主函数中调用了fun函数,实参为数组名k和整数5,这样对应定义fun函数首部有三种形式(教材P84),这里采用了第二种形式。这样在fun函数对a[i]操作实际上就是对主函数中的k[i]操作,即 k[0]k[4] k[1]k[3]值交换了,所以选D

此题与对应教材类似第三分册467.

 

35)有如下程序:

 #include

 #define N  4

void fun(int a[][N],int b[])

{ int i;

  for(i=0;i

}

main()

{ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;

fun(x,y);

for(i=0;i

printf("\n");

}程序的运行结果是

   A)1,2,3,4,  B)1,0,7,0,    C)1,4,5,9,       D)3,4,8,10,

答案:B

详细解答:该知识点考察的是二维数组名和一维数组名作为实参进行参数传递,是我们上课强调的重点内容。在主函数中调用了fun函数,实参为二维数组名x和一维数组名y,这样对应定义fun函数首部也有三种形式(教材P84P86),这里采用了第二种形式。这样在fun函数对a[i][j]b[i]进行操作实际上就是对主函数中的x[i][j]y[i]进行操作,即把 x[0][0]x[1][1]x[2][2]x[3][3]分别赋给y[0] y[1]y[2]y[3],所以选B

此题与对应教材类似第三分册4917.

 

36)有如下程序:

 #include

int  fun(int (*s)[4],int n,int k)

{

int m,i;

m=s[0][k];

 for(i=0;im) m=s[i][k];

return m;

}

main()

{int a[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};

printf("%d\n",fun[a,4,0]);

}程序的运行结果是

   A)4   B)34    C)31   D)32

答案:C

详细解答:该知识点考察的是二维数组名作为实参进行参数传递,是我们上课强调的重点内容。在主函数中调用了fun函数,实参为二维数组名a和两个整数40,这样对应定义fun函数首部也有三种形式(教材P86),这里采用了第一种形式,也就是行指针。这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中的最大那个元素,所以选C

此题与对应教材类似第三分册503.

 

(37)有如下程序:

#include 

main ()

{struct STU {char name[9]; char ***; double score[2];};

struct STU a={Zhao,m,85.0,90.0}, b={Qian,f,95.0,92.0};

b=a;

printf(%s,%c,%2.0f,%2.0f\n,b.name,b.***,b.score[0],b.score[1]);

}

程序的运行结果是

AQian,f,95,92    B)Qian,m,85,90     C)Zhao,f,95,92           D)Zhao,m,85,90

答案:D

详细解答:该知识点考察的是结构体初始化赋值以及成员的引用问题,是我们上课强调的重点内容。在main中分别定义了两个结构体变量a b,虽然有语句b=a;但是并不影响结构体b中个成员的值,要改变成员的值必须要正确的引用成员,结构体成员的引用有三种方法(教材P115),因此选D

此题与对应教材类似第三分册721.

 

(38)假定已建立以下链表结构,且指针pq已指向如图所示的结点:

则以下选项中可将q所指的结点从链表中删除并释放该结点的语句组是

A)(*p).next=(*q).next;free(p);           B)p=q.>next; free(q);

C)p=q;free(q);                          D)p->next =q->next; free(q);

答案:D

详细解答:该知识点考察的是用结构体初构成链表的相关问题,是我们上课强调的重点内容。要删除q所指向的结点,只需要把q所指向结点的next成员中的地址赋给p所指向的结点中的next成员,让p跳过q所指向的结点,直接指向下一个结点即可,因此选D

此题与对应教材类似第三分册717.

 

39)有如下程序:

#include

main()

{

char a=4;

printf("%d\n",a=a<<1);

}

程序的运行结果是

   A)40   B)16   C)8   D)4

答案:C

详细解答:该知识点考察的是位运算,是我们上课强调的重点必考内容。左移n位相当与乘以2n,所以4*21=8 因此选C

此题与对应教材类似第三分册2313.

 

40)有如下程序:

   #include

main()

{

  FILE *pf;

char *s1="China",*s2="Beijing";

pf=fopen("abc.dat","wb+");

fwrite(s2,7,1,pf);

rewind(pf);

fwrite(s1,5,1,pf);

fclose(pf);

} 程序的运行结果是

   A)China  B)Chinang   C)ChinaBeijing  D)BeijingChina

答案:B

详细解答:该知识点考察的是几个文件指针函数,是我们上课强调的重点内容。此题和我们的教材P133上的一道例题几乎是一样的,首先定义了2个指针字符串,fwrite(s2,7,1,pf)表示把从地址s2开始的7个字符写到pf所指的文件中,即把Beijing 写到了文件中;rewind(pf)表示把文件的位置移动到文件的开头;fwrite(s1,5,1,pf)表示把从地址s1开始的5个字符写到pf所指的文件中,即又把China写到文件中,于是覆盖了s2 所指字符串的前5个字符,所以最后文件中的内容是Chinang B

此题与对应教材类似第三分册7814.

 

二、填空题目

 

1) 对下列二叉树进行中序遍历的结果是:

答案:DBXEAYFZC

详细解答:该知识点考察的是二叉树的遍历,是我们上课强调的重点必考内容。二叉树的中序遍历是先访问左子树,再访问根结点,最后访问右子树。(请回顾前序和后序遍历的原则)把握了这点原则的话很容易得出答案DBXEAYFZC

此题与对应教材类似第三分册8228.

 2) 按照软件测试的一般步骤,集成测试应在       之后进行。

答案:单元

详细解答:该知识点考察的是软件测试的4个步骤,是我们的总结上强调内容。是软件测试的4个步骤包括单元测试、集成测试、确认测试和系统测试。所以答案为单元测试。

此题与对应教材类似第三分册8723.

 

3)软件工程三要素方法包括工具、方法和过程,其中       支持软件开发的各个环节的控制和管理

答案:过程

详细解答:该知识点考察的是软件工程三要素的具体内容,是我们总结上强调的考试内容。在我们的教材上P26有确切的解释。工具:完成软件工程项目的技术手段;工具:支持软件的开发、管理、文档生成;过程:支持软件开发的各个环节的控制和管理

此题与对应教材类似第三分册863.

 

4)数据库设计包括概念设计、       和物理设计。

答案:逻辑设计

详细解答:该知识点考察的是数据库设计阶段的内容,是我们总结上强调的重点考试内容。数据库设计包括需求分析阶段、概念设计阶段、逻辑设计阶段和物理设计阶段。但题目强调的是设计包括的内容,所以答案为逻辑设计。

此题与对应教材类似第三分册9225.

 

5) 在二维表中,元组的       不能再分成更小的数据项。

答案:分量

详细解答:该知识点考察的是元组的有关内容,是我们总结上强调的重点内容。一个实体的所有属性值叫元组,而一个元组是由n个元组分量组成的,由此可知元组的分量是不能再分成更小的数据项。

此题与对应教材类似第三分册9114.

 

6) 设变量ab已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式_______

答案:a=-b

详细解答:该知识点是考查了复合赋值表达式的运算,原表达式等价于:a=a-(a+b),a=-b.

此题与对应教材第三分册98题。

 

7) 若整型变量ab中的值分别为79

要求按以下格式输出ab的值:

a=7

b=9

请完成输入语句:printf(“【7】”,a,b);

答案:a=%d\nb=%d\n

详细解答:该知识点是考查数据的输入输出格式,属于识记内容,在课堂上多次强调。

此题与对应教材第三分册95题。

 

8)以下程序的输出结果【8】。.

#include

main()

{   int   i,j,sum;

    for(i=3;i>=1;i--)

    {   sum=0;

for(j=1;j<=i;j++)   sum+=i*j;

}

printf(%d\n,sum);

}

答案:1

详细解答:该知识点是考查了循环的嵌套,由于对于i的每一轮循环,sum都重新初始化为0,所以sum的值是i1这一轮的值,即i1j为时,sum的值是0.

此题与对应教材第三分册206题。

 

9)以下程序的输出结果是【9】。

#include

main()

{    int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;

     for(j=3;j;j--)

     {   switch(j)

        { case 1:

            case 2: printf("%d",*p++); break;

         case 3: printf("%d",*(--p));

        }

     }

}

答案: 9911

详细解答:指针p开始指向a[5],①第一轮循环,j值为3,匹配case 3,打印*(--p),a[4]的值9,指针p指向a[4];②第二轮循环,j值为2,匹配case 2,打印*p++(先用后加),即值为9,p指向a[5],遇break跳出switch语句; ③第三轮循环,j值为1,匹配case 1,无执行语句,由于没有break,继续往下执行case 2,打印*p++,即值为11。当j值为0时,表达式j为假,结束for循环。最后输出9911.

此题与对应教材第三分册219

 

10) 以下程序的输出结果是【10】。

    #include

#define N 5

int fun(int *s,int a,int n)

{  int j;

       *s=a;j=n;

       while(a!=s[j]) j--;

       return j;

}

main()

{     int s[N+1]; int k;

        for(k=1;k<=N;k++)  s[k]=k+1;

           printf("%d\n",fun(s,4,N));

}

答案:3

详细解答:主函数里的for语句给数组s赋初值{0,2,3,4,5,6},调用函数fun(s,4,N)的功能是把s[0]重新赋值为4,然后从数组元素s[5]由后往前,与s[0]比较,直到s[0]s[j]相等,即(a!=s[j]值为假,结束while循环,返回此时j的值。显然,当j3时,s[3]的值为4,与s[0]相等,故答案为3.

此题与对应教材第三分册3713(返回数组下标)

 

11)以下程序的输出结果是【11】。

#include

#define N 5

int fun(int x)

{  static int t=0;

       return(t+=x);

}

main()

{       int s,i;

        for(i=1;i<=5;i++)   s=fun(i);

           printf("%d\n",s);

}

答案:15

详细解答:此题考查了静态局部变量。当每一次调用函数fun时,静态变量t的值不会消失。主函数5次调用了函数fun,s的值为1+2+3+4+5=15.

此题与对应教材第三分册453

 

12)以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。

                 4

3   7

                 2   6   9

              1   5   8   10

#include

main()

{     int x[4][4],n=0,i,j;

        for(j=0;j<4;j++)

 for(i=3;i>=j; 12)

{n++;x[i][j]= 13;}

for(i=0;i<4;i++)    

 {  for(j=0;j<=i;j++)  printf("%3d",x[i][j]);

               printf("\n");

           }

}

答案i--;n详细解答: 第二个for语句的作用是按指定的数据给x数组的下三角置数,置数的顺序为从左至右,从下往上。

此题与对应教材第三分册526题。

 

13)以下程序的功能是:通过函数func输入

字符并统计输入字符的个数。输入时用字符@作为输入标志。请填空。

#include

long14;   

main()

{     long n;

        n=func();   printf("n=%ld\n",n);

}

long func()

{   long m;

        for(m=0; getchar()!='@'; 15);

           return m;

}

答案:func();m++

详细解答:函数的定义在调用之后,需先申明申明格式就是函数首部加上一个“;”。 for的循环体语句为空语句,因此字符个数的统计在for之后的圆括号的表达式3中完成,每输入一个不为@的字符,执行空语句之后,m加上1,直到输入字符@为止。

 

阅读(2467) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~