第五套笔试题

一、选择题

1下列对于线性链表的描述中正确的是______

A、存储空间不一定是连续,且各元素的存储顺序是任意的

B、存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C、存储空间必须连续,且前件元素一定存储在后件元素的前面

D、存储空间必须连续,且各元素的存储顺序是任意的

2、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为______

Alog2n   Bn/2   Cn   Dn+1

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对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是______

A、冒泡排序为n/2   B、冒泡排序为n  C、快速排序为n   D、快速排序为n(n-1)/2

9数据独立性是数据库技术的重要特点之一,所谓数据独立性是指______

A、数据与程序独立存放                    B、不同的数据被存放在不同的文件中

C不同的数据只能被对应的应用程序所使用  D、以上三种说法都不对

10数据的存储结构是指______

A、存储在外存中的数据                   B、数据所占的存储空间量

C、数据在计算机中的顺序存储方式         D、数据的逻辑结构在计算机中的表示

11、有以下程序

#include <stdio.h>

void WriteStr(char *fn,char *str)

{ FILE *fp;

  fp=fopen(fn,"w");

  fputs(str,fp);

  fclose(fp);

}

main()

{

  WriteStr("t1.dat","start");

  WriteStr("t1.dat","end");

}

程序运行后,文件t1.dat中的内容是______

Astart   Bend  Cstartend   Dendrt

12以下叙述中正确的是______

A用C程序实现的算法必须要有输入和输出操作

B用C程序实现的算法可以没有输出但必须要输入

C用C程序实现的算法可以没有输入但必须要有输出

D用C程序实现的算法可以既没有输入也没有输出

13以下对结构体类型变量td的定义中,错误的是______

A、typedef struct aa   

   { int n;    

     float m;      

   }AA;

   AA td;  

Bstruct aa

   { int n;

     float m;

   }td;

   struct aa td;

Cstruct

   { int n;

     float m;

   }aa;

   struct aa td;

Dstruct

   { int n;

     float m;

   }td;

 

14若有以下说明和定义

union dt

{int a;char b;double c;} data;

以下叙述中错误的是______

A、data的每个成员起始地址都相同

B、变量data所占的内存字节数与成员c所占字节数相等

C、程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000

D、data可以作为函数的实参

15有以下程序

main()

{

  int a[3][2]={0},(*ptr)[2],i,j;

  for(i=0;i<2;i++)  {ptr=a+i;  scanf("%d",ptr);  ptr++; }

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

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

      printf("\n");

  }

}

若运行时输入:1 2 3<回车>,则输出结果是______

A产生错误信息

 

B10

   20

   00

C12

   30

   00

D10

   20

   30

16有以下程序

main()

{ int m=12,n=34;

  printf("%d%d",m++,++n);

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

}

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

A、12353514   B、12353513   C、12343514   D、12343513

17、有以下程序

main()

{

  int a[3][3],*p,i;

  p=&a[0][0];

  for(i=0;i<9;i++) p[i]=i;

  for(i=0;i<3;i++) printf("%d",a[1][i]);

}

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

A012   B123   C234   D345

18设有如下说明

typedef struct ST 

{long a;int b;char c[2];} NEW;

则下面叙述中正确的是______

A以上的说明形式非法     BST是一个结构体类型

CNEW是一个结构体类型    DNEW是一个结构体变量

19有以下程序

main()

{ int a,b,d=25;

  a=d/10%9;

  b=a&&(-1);

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

}

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

A6,1   B2,1   C6,0   D2,0

20有以下程序

main()

{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;

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

  { for(j=0;j<=i;j++) printf("%4c",'  ');

    for(j=_____;j<4;j++)  printf("%4d",num[i][j]);

    printf("\n");

  }

}

若要按以下形式输出数组右上半三角

1   2   3   4

6   7   8

11  12

16

 则在程序下划线处应填入的是______

Ai-1    BI   Ci+1    D4-i

21若整型变量abcd中的值依次为:1432则条件表达式a<b?a:c<d?c:d的值是______

A1   B2   C3   D4

22有以下程序

main()

{

 int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

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

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

}

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

A42   B45     C56   D60

23有以下程序prt(int *m,int n)

{ int i;

  for(i=0;i<n;i++) m[i]++;

}

main()

{

  int a[]={1,2,3,4,5},i;

  prt(a,5);

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

    printf("%d,",a[i]);

}

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

A1,2,3,4,5,   B2,3,4,5,6,   C3,4,5,6,7,   D2,3,4,5,1,

24有定义语句:int b;char c[10];,则正确的输入语句是______

Ascanf("%d%s",&b,&c);    Bscanf("%d%s",&b,c);

Cscanf("%d%s",b,c);      Dscanf("%d%s",b,&c);

25有以下程序

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?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-f;

  printf("%d,%d,%d\n",e,f,g);

}

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

A4,3,7    B3,4,7   C5,2,7    D2,5,7

26、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______

A数组ab的长度相同        Ba数组长度小于b数组长度

Ca数组长度大于b数组长度    D上述说法都不对

27有以下程序

void f(int *x,int *y)

{

  int t;

  t=*x;*x=*y;*y=t;

}

main()

{

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

  p=a;q=&a[7];

  while(p<q)

  {  f(p,q);p++;q--;}

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

}

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

A、8,2,3,4,5,6,7,1,   B、5,6,7,8,1,2,3,4,  C、1,2,3,4,5,6,7,8,  D、8,7,6,5,4,3,2,1,

28、以下叙述中错误的是______

A对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B数组名代表的是数组所占存储区的首地址,其值不可改变

C当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越界"的出错信息

D可以通过赋初值的方式确定数组元素的个数

29有以下程序

main()

{ int i=1,j=2,k=3;

  if(i++==1&&(++j==3||k++==3))

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

}

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

A、1 2 3   B、2 3 4    C、2 2 3   D、2 3 3

30、以下选项中不能作为合法常量的是______

A1.234e04      B1.234e0.4   C1.234e+4   D1.234e0

31有以下程序

#define N 20

fun(int a[],int n,int m)

{ int i,j;

  for(i=m;i>=n;i--) a[i+1]=a[i];

}

main()

{

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

  fun(a,2,9);

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

}

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

A10234      B12344   C12334   D12234

32以下选项中可作为C语言合法常量的是______

A-80.   B-080   C-8e1.0   D-80.0e

33有以下程序

main()

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

  for(p=a;p<a+10;p++) printf("%d,",*p);

}

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

A1,2,3,4,5,6,7,8,9,0,   B2,3,4,5,6,7,8,9,10,1,

C0,1,2,3,4,5,6,7,8,9,   D1,1,1,1,1,1,1,1,1,1,

34有以下程序

main()

{  int m,n,p;

  scanf("m=%dn=%dp=%d",&m,&n,&p);

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

}

若想从键盘上输入数据,使变量m中的值为123n中的值为456p中的值为789,则正确的输入是______

Am=123n=456p=789              Bm=123  n=456  p=789

Cm=123,n=456,p=789            D123  456  789

35有以下程序

main()

{int c=35;printf("%d\n",c&c);}

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

A0      B70   C35   D1

36以下叙述中正确的是______

A、预处理命令行必须位于源文件的开头      B、在源文件的一行上可以有多条预处理命令

C、宏名必须用大写字母表示                D、宏替换不占用程序的运行时间

37、以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是______

Afeof(fp)     Bftell(fp)   Cfgetc(fp)   Drewind(fp)

38以下语句或语句组中,能正确进行字符串赋值的是______

Achar *sp;*sp="right!";        Bchar s[10];s="right!";

Cchar s[10];*s="right!";       Dchar *sp="right!";

39以下能正确定义一维数组的选项是______

Aint a[5]={0,1,2,3,4,5};      Bchar a[]={0,1,2,3,4,5};

Cchar a={'A','B','C'};        Dint a[5]="0123";

40以下不能定义为用户标识符的是______

AMain    B_0   C_int   Dsizeof

41有以下程序

main()

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

  p=s;

  printf("%c",*p++);

  printf("%c",*p++);

}

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

A15   B16   C12   D59

42有以下函数

fun(char *a,char *b)

{ while((*a!='\0')&&(*b!='\0')&&(*a==*b))

  {a++;b++;}

  return(*a-*b);

}

该函数的功能是______

A计算ab所指字符串的长度之差        Bb所指字符串连接到a所指字符串中

Cb所指字符串连接到a所指字符串后面  D比较ab所指字符串的大小

43有以下程序

point(char *p){p+=3;}

main()

{ char b[4]={'a','b','c','d'},*p=b;

  point(p);

  printf("%c\n",*p);

}

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

Aa     Bb      Cc        Dd

44数字字符0ASCII值为48,若有以下程序

main()

{ char a='1',b='2 ';

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

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

}

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

A3,2   B50,2  C2,2   D、2,50

45、程序中若有如下说明和定义语句

char fun(char *);

main()

{

  char *s="one",a[5]={0},(*f1)()=fun,ch;

  ......

}

以下选项中对函数fun的正确调用语句是______

A(*f1)(a);     B*f1(*s);   Cfun(&a);  Dch=*f1(s);

46有以下结构体说明和变量定义,如图所示:

struct node

{int  data;  struct  node  *next;} *p,*q,*r;

 

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______

Ap->next=q->next;     Bp->next=p->next->next;

Cp->next=r;           Dp=q->next;

47有以下程序

#define P 3

void F(int x){return(P*x*x);}

main()

{printf("%d\n",F(3+5));}

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

A192    B29    C25   D编译出错

48有以下程序

main()

{ int a=1,b;

  for(b=1;b<=10;b++)

  {  if(a>=8) break;

  if(a%2==1){a+=5;continue;}

  a-=3;

  }

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

}

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

A3   B4   C5   D6

49有以下程序

main()

{

  char a[7]="a0\0a0\0";

  int i,j;

  i=sizeof(a);

  j=strlen(a);

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

}

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

A2 2     B7 6     C7 2    D6 2

50算法具有五个特性,以下选项中不属于算法特性的是______

A、  有穷性    B、简洁性   C、可行性   D、确定性

二、填空题

1问题处理方案的正确而完整的描述称为      

2某二叉树中度为2的结点有18个,则该二叉树中有      个叶子结点。

3诊断和改正程序中错误的工作通常称为      

4在关系数据库中,把数据表示成二维表,每一个二维表称为      

5在面向对象方法中,类的实例称为      

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

main()

{ int a,b,c;

  a=10; b=20; c=(a%b<1)||(a/b>1);

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

}

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

#define S(x) 4*x*x+1

main()

{ int i=6,j=8;

  printf("%d\n",S(i+j));

}

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

main()

{ int a=3,b=4,c=5,t=99;

  if(b<a && a<c) t=a;a=c;c=t;

  if(a<c && b<c) t=b;b=a;a=t;

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

}

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

struct NODE

{ int k;

  struct NODE *link;

};

main()

{  struct NODE m[5],*p=m,*q=m+4;

  int i=0;

  while(p!=q){

  p->k=++i; p++;

  q->k=i++; q--;

  }

  q->k=i;

  for(i=0;i<5;i++) printf("%d",m[i].k);

    printf("\n");

}

10以下程序中,fun函数的功能是求34列二维数组每行元素中的最大值。请填空。

void fun(int,int,int(*)[4],int *);

main()

{ int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

  fun(3,4,a,b);

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

  printf("\n");

}

void fun(int m,int n,int ar[][4],int *br)

{  int i,j,x;

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

  {  x=ar[i][0];

    for(j=0;j<n;j++) if(x<ar[i][j]) x=ar[i][j];

    ______=x;   

  }

}

11以下程序运行时,若从键盘输入:10 20 30<回车>,输出的结果是______

#include <stdio.h>

main()

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

  scanf("%d%*d%d",&i,&j,&k);

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

}

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

#include <string.h>

main()

{ char ch[]="abc",x[3][4]; int i;

  for(i=0;i<3;i++) strcpy(x[i],ch);

  for(i=0;i<3;i++) printf("%s",&x[i][i]);

  printf("\n");

}

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

void swap(int x,int y)

{ int t;

  t=x;x=y;y=t;printf("%d %d ",x,y);

}

main()

{ int a=3,b=4;

  swap(a,b); printf("%d %d",a,b);

}

 

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

#include <string.h>

void fun(char *s,int p,int k)

{ int i;

  for(i=p;i<k-1;i++) s[i]=s[i+2];

}

main()

{ char s[]="abcdefg";

  fun(s,3,strlen(s)); puts(s);

}

15已知字符AASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是______

#include  <stdio.h>

main()

{ char a,b;

  a=getchar();scanf("%d",&b);

  a=a-'A'+'0';b=b*2;

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

}

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

fun(int a)

{ int b=0; static int c=3;

  b++;c++;

  return(a+b+c);

}

main()

{ int i,a=5;

  for(i=0;i<3;i++) printf("%d%d",i,fun(a));

  printf("\n");

}

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

main()

{ char c1,c2;

  for(c1='0',c2='9';c1<c2;c1++,c2--)  printf("%c%c",c1,c2);

  printf("\n");

}

18以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。

#include <string.h>

char *huiwen(char *str)

{ char *p1,*p2; int i,t=0;

  p1=str;p2=______;

  for(i=0;i<=strlen(str)/2;i++)

  if(*p1++!=*p2--){t=1;break;}

  if(______) return("yes!");

  else return("no!");

}

main()

{ char str[50];

  printf("Input:"); scanf("%s",str);

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

}

选择题答案:

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

答案

A

C

C

D

B

C

B

D

D

D

B

C

C

C

题号

15

16

17

18

19

20

21

22

23

24

25

26

27

28

答案

B

A

D

C

B

B

A

B

B

B

A

C

D

C

题号

29

30

31

32

33

34

35

36

37

38

39

40

41

42

答案

D

B

C

A

A

A

C

D

D

D

B

D

A

D

题号

43

44

45

46

47

48

49

50

 

 

 

 

 

 

答案

A

C

A

D

D

B

C

B

 

 

 

 

 

 

填空题答案:1、算法 2 19 3、程序调试  4、关系  5、对象  610 20 0 781

84 5 99 913431   10br[i] *(br+i) *(i+br)  1110300 12abcbcc

134 3 3 4 14abcfg  151 B  16010111212  170918273645   18p1+(strlen(str)-1) str+(strlen(str)-1) 19 t==0 !(t!=0) t!=1 !t   20 huiwen(str) (strlen(str)-1)+p1 (strlen(str)-1)+str