第五套笔试题

一、选择题

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

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

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

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

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

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

A、log2n   B、n/2   C、n   D、n+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中的内容是______。

A、start   B、end  C、startend   D、endrt

12、以下叙述中正确的是______。

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

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

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

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

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

A、typedef struct aa   

   { int n;    

     float m;      

   }AA;

   AA td;  

B、struct aa

   { int n;

     float m;

   }td;

   struct aa td;

C、struct

   { int n;

     float m;

   }aa;

   struct aa td;

D、struct

   { 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、产生错误信息

 

B、10

   20

   00

C、12

   30

   00

D、10

   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]);

}

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

A、012   B、123   C、234   D、345

18、设有如下说明

typedef struct ST 

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

则下面叙述中正确的是______。

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

C、NEW是一个结构体类型    D、NEW是一个结构体变量

19、有以下程序

main()

{ int a,b,d=25;

  a=d/10%9;

  b=a&&(-1);

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

}

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

A、6,1   B、2,1   C、6,0   D、2,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

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

A、i-1    B、I   C、i+1    D、4-i

21、若整型变量a、b、c、d中的值依次为:1、4、3、2则条件表达式a<b?a:c<d?c:d的值是______。

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

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);

}

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

A、42   B、45     C、56   D、60

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]);

}

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

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

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

A、scanf("%d%s",&b,&c);    B、scanf("%d%s",&b,c);

C、scanf("%d%s",b,c);      D、scanf("%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);

}

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

A、4,3,7    B、3,4,7   C、5,2,7    D、2,5,7

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

A、数组a和b的长度相同        B、a数组长度小于b数组长度

C、a数组长度大于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、以下选项中不能作为合法常量的是______。

A、1.234e04      B、1.234e0.4   C、1.234e+4   D、1.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]);

}

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

A、10234      B、12344   C、12334   D、12234

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);

}

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

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

C、0,1,2,3,4,5,6,7,8,9,   D、1,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中的值为123,n中的值为456,p中的值为789,则正确的输入是______。

A、m=123n=456p=789              B、m=123  n=456  p=789

C、m=123,n=456,p=789            D、123  456  789

35、有以下程序

main()

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

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

A、0      B、70   C、35   D、1

36、以下叙述中正确的是______。

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

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

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

A、feof(fp)     B、ftell(fp)   C、fgetc(fp)   D、rewind(fp)

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

A、char *sp;*sp="right!";        B、char s[10];s="right!";

C、char s[10];*s="right!";       D、char *sp="right!";

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

A、int a[5]={0,1,2,3,4,5};      B、char a[]={0,1,2,3,4,5};

C、char a={'A','B','C'};        D、int a[5]="0123";

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

A、Main    B、_0   C、_int   D、sizeof

41、有以下程序

main()

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

  p=s;

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

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

}

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

A、15   B、16   C、12   D、59

42、有以下函数

fun(char *a,char *b)

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

  {a++;b++;}

  return(*a-*b);

}

该函数的功能是______。

A、计算a和b所指字符串的长度之差        B、将b所指字符串连接到a所指字符串中

C、将b所指字符串连接到a所指字符串后面  D、比较a和b所指字符串的大小

43、有以下程序

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

main()

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

  point(p);

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

}

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

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

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

main()

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

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

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

}

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

A、3,2   B、50,2  C、2,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);   C、fun(&a);  D、ch=*f1(s);

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

struct node

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

 

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

A、p->next=q->next;     B、p->next=p->next->next;

C、p->next=r;           D、p=q->next;

47、有以下程序

#define P 3

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

main()

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

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

A、192    B、29    C、25   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);

}

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

A、3   B、4   C、5   D、6

49、有以下程序

main()

{

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

  int i,j;

  i=sizeof(a);

  j=strlen(a);

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

}

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

A、2 2     B、7 6     C、7 2    D、6 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函数的功能是求3行4列二维数组每行元素中的最大值。请填空。

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、已知字符A的ASCII代码值为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、对象  6、10 20 0 7、81

8、4 5 99 9、13431   10、br[i] 或 *(br+i) 或 *(i+br)  11、10300 12、abcbcc

13、4 3 3 4 14、abcfg  15、1 B  16、010111212  17、0918273645   18、p1+(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