第四套笔试题

一、选择题

1按条件f对关系R进行选择,其关系代数表达式为______

A    B     C、бf(R)  Df(R)

2、在计算机中,算法是指______

A、查询方法   B、加工方法   C、解题方案的准确而完整的描述  D、排序方法

3、单个用户使用的数据视图的描述称为______

A外模式   B概念模式  C内模式   D存储模式

4面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______

A模拟现实世界中不同事物之间的联系

B强调模拟现实世界中的算法而不强调概念

C使用现实世界的概念抽象地思考问题从而自然地解决问题

D鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

5在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是______

A、循环的集合   B、地址的集合     C、路径的集合  D、目标的集合

6、下列叙述中,不属于软件需求规格说明书的作用的是______

A、便于用户、开发人员进行理解和交流

B、反映出用户问题的结构,可以作为软件开发工作的基础和依据

C、作为确认测试和验收的依据

D、便于开发人员进行需求分析

7在单链表中,增加头结点的目的是______

A、方便运算的实现              B、使单链表至少有一个结点

C、标识表结点中首结点的位置    D、说明单链表是线性表的链式存储实现

8设有下列二叉树:

     

对此二叉树中序遍历的结果为______。

AABCDEF   BDBEAFC   CABDECF  DDEBFCA

9用树形结构来表示实体之间联系的模型称为______

A、关系模型   B、层次模型  C、网状模型   D、数据模型

10、软件开发的结构化生命周期方法将软件生命周期划分成______

A、定义、开发、运行维护          B、设计阶段、编程阶段、测试阶段

C、总体设计、详细设计、编程调试  D、需求分析、功能定义、系统设计

11有以下程序

main()

{char str[][10]={"China","Beijing"},*p=str;

  printf("%s\n",p+10);

}

程序运行后的输出结果是______

AChina   BBejing   Cng   Ding

12以下定义语句中正确的是______

Achar a='A'b='B';    Bfloat a=b=10.0;

Cint a=10,*b=&a;     Dfloat *a,b=&a;

13有以下说明和定义语句

struct student

{ int age; char num[8];};

struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};

struct student *p=stu;

以下选项中引用结构体变量成员的表达式错误的是______

A(p++)->num   Bp->num   C(*p).num   Dstu[3].age

14有以下程序

main()

{ char a,b,c,d;

  scanf("%c,%c,%d,%d",&a,&b,&c,&d);

  printf("c,%c,%c,%c\n",a,b,c,d);

}

若运行时从键盘上输入:6,5,65,66。则输出结果是______。

A、6,5,A,B   B、6,5,65,66   C、6,5,6,5  D、6,5,6,6

15、有以下定义语句double a,b;int w; long c;

若各变量已正确赋值,则下列选项中正确的表达式是______

Aa=a+b=b++  Bw%((int)a+b)  C(c+w)%(int)a  Dw=a==b;

16有以下程序

main()

{ char a='a',b;

  printf("%c,",++a);

  printf("%c\n",b=a++);

}

程序运行后的输出结果是______

A、b,b   B、b,c   C、a,b   D、a,c

17、以下叙述中正确的是______

A、局部变量说明为static存储类,其生存期将得到延长

B、全局变量说明为static存储类,其作用域将被扩大

C、任何存储类的变量在未赋初值时,其值都是不确定的

D、形参可以使用的存储类说明符与局部变量完全相同

18、设有以下定义和语句

int a[3][2]={1,2,3,4,5,6},*p[3];

p[0]=a[1];

*(p[0]+1)所代表的数组元素是______

Aa[0][1]   Ba[1][0]  Ca[1][1]  Da[1][2]

19有以下程序

main()

{ int a=666,b=888;

  printf("%d\n",a,b);

}

程序运行后的输出结果是______

A、错误信息  B、666  C、888   D、666,888

20有以下程序:

main()

{ int i;

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

    switch(i)

    {

      case 0:printf("%d",i);

      case 2:printf("%d",i);

      default:printf("%d",i);

    }

}

程序运行后的输出结果是______

A022111   B021021  C000122  D012

21已有定义:int i,a[10],*p;,则合法的赋值语句是______

Ap=100;   Bp=a[5];  Cp=a[2]+2;   Dp=a+2;

22下列条件语句中,功能与其他语句不同的是______

Aif(a) printf("%d\n",x); else printf("%d\n",y);

Bif(a==0) printf("%d\n",y); else printf("%d\n",x);

Cif (a!=0) printf("%d\n",x); else printf("%d\n",y);

Dif(a==0) printf("%d\n",x); else printf("%d\n",y);

23有以下程序

main()

{ int m=3,n=4,x;

  x=-m++;

  x=x+8/++n;

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

}

程序运行后的输出结果是______

A3   B5  C-1   D-2

24有以下程序

main()

{ int i=0,s=0;

  for (;;)

  {

    if(i==3||i==5) continue;

    if (i==6) break;

    i++;

    s+=i;

  };

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

}

程序运行后的输出结果是______

A、10   B、13   C、21  D、程序进入死循环

25、以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请为下划线处有号码的选择出正确的选项。

#include <stdlib.h>

stuct node

{ char data; struct node *next;};

  ______  CreatList(char *s)

{ struct node *h,*p,*q);

  h=(struct node *) malloc(sizeof(struct node));

  p=q=h;

  while(*s!='\0')

  {  p=(struct node *) malloc(sizeof(struct node));

     p->data=___(49)___  ;

     q->next=p;

     q=______  ;

     s++;

  }

  p->next='\0';

  return h;

}

main()

{ char str[]="link list";

  struct node *head;

  head=CreatList(str);

  ...

}

A*s   Bs   C*s++   D(*s)++

26有以下程序:

main()

 {int a=3,b=4,c=5,d=2;

  if(a>b)

   if(b>c)

    printf("%d",d++ +1);

  else

    printf("%d",++d +1);

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

}

程序运行后的输出结果是______

A、2   B、3   C、43  D、44

27、与十进制数200等值的十六进制数为______

AA8    BA4   CC8   DC4

28有以下程序

int f(int a)

{ return a%2; }

main()

{ int s[8]={1,3,5,2,4,6},i,d=0;

  for (i=0;f(s[i]);i++) d+=s[i];

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

}

程序运行后的输出结果是______

A、9  B、11   C、19  D、21

29、设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是______

Ac1^c2    Bc1&c2   C~c2   Dc1|c2

30s1s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;,则以下选项中正确的是______

Aif(s1>s2) S;                   Bif(strcmp(s1,s2)) S;

Cif(strcmp(s2,s1)>0) S;         Dif(strcmp(s1,s2)>0) S;

31有以下程序

main()

{ int m=0256,n=256;

  printf("%o %o\n",m,n);

}

程序运行后的输出结果是______

A、0256 0400   B、0256 256   C、256 400   D、400 400

32、设有定义语句

int x[6]={2,4,6,8,5,7},*p=x,i;

要求依次输出x数组6个元素中的值,不能完成此操作的语句是______

Afor(i=0;i<6;i++) printf("%2d",*(p++));

Bfor(i=0;i<6;i++) printf("%2d",*(p+i));

Cfor(i=0;i<6;i++) printf("%2d",*p++);

Dfor(i=0;i<6;i++) printf("%2d",(*p)++);

33有以下程序

#include <stdio.h>

main()

{int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

  *q=*(p+5);

   printf("%d %d\n",*p,*q);

}

程序运行后的输出结果是______

A、运行后报错   B、6 6    C、6 11   D、5 10  

34有以下程序

main()

{ char s[]="Yes\n/No",*ps=s;

  puts(ps+4);

  *(ps+4)=0;

  puts(s);

}

程序运行后的输出结果是______

An/No

   Yes

   /No

B/No

   Yes

C/NO

   Yes

   /No

D、/No

   Yes

35下列选项中,不能用作标识符的是______

A_1234_   B_1_2   Cint_2_   D2_int_

36有以下程序

main()

{char s[]="ABCD",*p;

  for(p=s+1;p<s+4;p++)printf("%s\n",p);

}

程序运行后的输出结果是______

AABCD

   BCD

   CD

   D

BA

   B

   C

C、B

   C

   D

D、BCD

   CD

   D

37在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则______

A、称为函数的直接递归调用      B、称为函数的间接递归调用

C、称为函数的循环调用          D、C语言中不允许这样的递归调用

38、xy代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是______

Aabs(x-y)<10                Bx-y>-10&&x-y<10

C!(x-y)<-10||!(y-x)>10      D(x-y)*(x-y)<100

39有如下程序

#include <stdio.h>

main()

{FILE  *fp1;

   fp1=fopen("f1.txt","w");

   fprintf(fp1,"abc");

   fclose(fp1);

}

若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为______

Agoodabc     Babcd   Cabc   Dabcgood

40有以下程序

void fun(int *a,int i,int j)

{ int t;

  if(i<j)

  { t=a[i];a[i]=a[j];a[j]=t;

    i++; j--;

    fun(a,i,j);

  }

}

main()

{ int x[]={2,6,1,8},i;

  fun(x,0,3);

  for(i=0;i<4;i++) printf("%2d",x[i]);

  printf("\n");

}

程序运行后的输出结果是______

A、1 2 6 8   B、8 6 2 1   C、8 1 6 2      D、8 6 1 2

41、程序中对fun函数有如下说明

void *fun();

此说明的含义是______

Afun函数无返回值          Bfun函数的返回值可以是任意的数据类型

C、fun函数的返回值是无值型的指针类型

D、指针fun指向一个函数,该函数无返回值

42、以下能正确定义二维数组的是______

Aint a[][3];                       Bint a[][3]={2*3};

Cint a[][3]={};                 Dint a[2][3]={{1},{2},{3,4}};

43有以下程序

main()

{ unsigned int a;

  int b=-1;

  a=b;

  printf("%u",a);

}

程序运行后的输出结果是______

A-1  B65535  C32767  D-32768

44有以下程序

main()

{ int a=7,b=8,*p,*q,*r;

  p=&a;q=&b;

  r=p; p=q;q=r;

  printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

程序运行后的输出结果是______

A、8,7,8,7    B、7,8,7,8   C、8,7,7,8    D、7,8,8,7

45、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是______

Afor(i=1,p=1;i<=5;i++) p*=i;

Bfor(i=1;i<=5;i++){ p=1; p*=i;}

Ci=1;p=1;while(i<=5){p*=i; i++;}

Di=1;p=1;do{p*=i; i++; }while(i<=5);

46有以下程序

main()

{ int x[]={1,3,5,7,2,4,6,0},i,j,k;

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

  for (j=2;j>=i;j--)

    if(x[j+1]>x[j]){  k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

    for(j=4;j<7-i;j++)

     if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

  printf("\n");

}

程序运行后的输出结果是______

A、75310246    B、01234567   C、76310462    D、13570246

47、结构化程序由三种基本结构组成,三种基本结构组成的算法______

A、可以完成任何复杂的任务      B、只能完成部分复杂的任务

C、只能完成符合结构化的任务    D、只能完成一些简单的任务

48、以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请为下划线处有号码的选择出正确的选项。

#include <stdlib.h>

stuct node

{ char data; struct node *next;};

___(48)___ CreatList(char *s)

{ struct node *h,*p,*q;

  h=(struct node *) malloc(sizeof(struct node));

  p=q=h;

  while(*s!='\0')

  {  p=(struct node *) malloc(sizeof(struct node));

     p->data= ______  ;

     q->next=p;

     q=  ______ ;

     s++;

  }

  p->next='\0';

  return h;

}

main()

{ char str[]="link list";

  struct node *head;

  head=CreatList(str);

  ...

}

Achar *     Bstruct node  Cstruct node *    Dchar

49若有以下说明和语句

int c[4][5],(*p)[5];

p=c;

能够正确引用c数组元素的是______

Ap+1   B*(p+3)   C*(p+1)+3   D*(p[0]+2)

50以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请为下划线处有号码的选择出正确的选项。

#include <stdlib.h>

stuct node

{ char data; struct node *next;};

  ______  CreatList(char *s)

{ struct node *h,*p,*q);

  h=(struct node *) malloc(sizeof(struct node));

  p=q=h;

  while(*s!='\0')

  {  p=(struct node *) malloc(sizeof(struct node));

     p->data=______  ;

     q->next=p;

     q=___(50)___  ;

     s++;

  }

  p->next='\0';

  return h;

}

main()

{ char str[]="link list";

  struct node *head;

  head=CreatList(str);

  ...

}

Ap->next   Bp   Cs   Ds->next

二、填空题

1软件的需求分析阶段的工作,可以概括为四个方面:______、需求分析、编写需求规格说明书和需求评审。

2、如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体"工人"与实体"设备"之间存在______联系。

3数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

4在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、______遍历和后序遍历。

5数据结构包括数据的逻辑结构、数据的 ______以及对数据的操作运算。

6以下程序运行后的输出结果是______

main ()

{ char a[]="Language",b[]="Programe";

  char *p1,*p2; int k;

  p1=a; p2=b;

  for(k=0;k<=7;k++)

    if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));

}

7以下程序运行后的输出结果是______

main()

{ char a[]="123456789",*p;

  int i=0;

  p=a;

  while(*p)

  { if(i%2==0) *p='*';

    p++;i++;

   }

   puts(a);

}

8以下程序运行后的输出结果是______

main()

{ int p[7]={11,13,14,15,16,17,18};

  int i=0,j=0;

  while(i<7 && p[i]%2==1) j+=p[i++];

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

}

9以下程序运行后的输出结果是______

main()

{ int a,b,c;

  a=25;

  b=025;

  c=0x25;

  printf("%d  %d  %d\n",a,b,c);

}

10以下程序运行后的输出结果是______

main()

{

int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

  int i=0,j=0,s=0;

  while(i++<4)

  {

    if(i==2||i==4) continue;

    j=0;

    do{ s+= a[i][j]; j++; } while(j<4);

  }

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

}

11以下程序运行后的输出结果是______

main()

{ int x=1,y=0,a=0,b=0;

  switch(x)

  {case 1:switch(y)

    { case 0:a++; break;

      case 1:b++; break;

    }

    case 2:a++;b++; break;

   }

  printf("%d  %d\n",a,b);

}

12以下程序段的输出结果是______

int i=9;

printf("%o\n",i);

13以下程序中, for循环体执行的次数是______

#define       N    2

#define       M    N+1

#define       K    M+1*M/2

main()

{ int i;

  for(i=1;i<K;i++)

  { ... }

  ...

}

14以下程序通过函数SunFunf(x)x=010,这里f(x)=x^2+1,由F函数实现,请填空。

main()

{ printf("The sun=%d\n",SunFun(10));}

SunFun(int n)

{ int x,s=0;

  for(x=0;x<=n;x++)s+F(______);

  return s;

}

F(int x)

{ return (______);}

15以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和,请填空。

main()

{ int i,a[20],sum,count;

   sum=count=0;

   for(i=0;i<20;i++)  scanf("%d",______ );

   fro(i=0;i<20;i++)

   { if(a[i]>0)

     { count++;

       sum+= ______ ;

     }

  }

  printf("sum=%d,count=%d\n",sum,count);

}

16以下程序中,函数SumColumMin的功能是:求出MN列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

#define M    2

#define  N    4

void SumColumMin(int a[M][N],int *sum)

{ int i,j,k,s=0;

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

  { k=0;

    for(j=1;j<M;j++)

      if(a[k][i]>a[j][i])k=j;

    s+=______ ;

   }

 ______ =s;

}

main()

{ int x[M][N]={3,2,5,1,4,1,8,3},s;

  SumColumMin(______);

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

}

第四套笔试题答案

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

答案

C

C

A

C

C

D

A

B

B

A

B

C

D

A

题号

15

16

17

18

19

20

21

22

23

24

25

26

27

28

答案

C

A

A

C

B

B

D

D

D

D

A

A

C

A

题号

29

30

31

32

33

34

35

36

37

38

39

40

41

42

答案

A

D

C

D

A

B

D

D

B

C

C

C

C

A

题号

43

44

45

46

47

48

49

50

 

 

 

 

 

 

答案

B

C

B

A

C

C

D

B

 

 

 

 

 

 

填空题答案 1需求获取 2、一对多  3、数据存储   4、中序  5、存储结构  6、gae  7、*2*4*6*8*  8、24  9、25 21 37 10、92   11、 2  1  12、11 13、4 14 、x 15、 x*x+1  

16&a[i] 17 a[i]   18a[k][i] 19 *sum 20 x,&s