第一套笔试题

一、选择题

1设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______

A、349  B、350  C、255  D、351

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在数据流图(DFD)中,带有名字的箭头表示______

A、控制程序的执行顺序   B、模块之间的调用关系   C、数据的流向  D、程序的组成成分

8、数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______

A自顶向下   B由底向上   C由内向外  D由整体到局部

9已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是______

A、堆排序   B、直接插入排序  C、快速排序  D、直接选择排序

10、在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有______

A、数据无冗余   B、数据可共享  C、专门的数据管理软件  D、特定的数据模型

11阅读以下函数

fun(char  *sl,char  *s2)

{   int  i=0;

    while(sl[i]==s2[i]&&s2[i]!='\0') i++;

    return(sl[i]=='\0'&&s2[i]=='\0');

}

此函数的功能是______

A将s2所指字符串赋给s1

B比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

12有以下程序

main()

{  char  str[]="xyz",*ps=str;

   while(*ps) ps++; 

   for(ps--;ps-str>=0;ps--)  puts(ps);}

执行后输出结果是______

Ayz

   xyz

Bz

   yz

Cz

   yz

   xyz

Dx

   xy

   xyz

13在一个C语言程序中______

A、main函数必须出现在所有函数之前   B、main函数可以在任何地方出现

C、main函数必须出现在所有函数之后   D、main函数必须出现在固定位置

14、下列叙述中正确的是______

A、C语言中既有逻辑类型也有集合类型   B、C语言中没有逻辑类型但有集合类型

C、C语言中有逻辑类型但没有集合类型   D、C语言中既没有逻辑类型也没有集合类型

15、下列关于C语言用户标识符的叙述中正确的是______

A、用户标识符中可以出现下划线和中划线(减号)

B、用户标识符中不可以出现中划线,但可以出现下划线

C、用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D、用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

16、C语言中用于结构化程序设计的三种基本结构是______

A、顺序结构、选择结构、循环结构  Bifswitchbreak

Cforwhiledo-while         Difforcontinue

17下列关于单目运算符++--的叙述中正确的是______

A、它们的运算对象可以是任何变量和常量

B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D、它们的运算对象可以是char型变量、int型变量和float型变量

18、以下叙述中不正确的是______

A、C语言中的文本文件以ASCII码形式存储数据

B、C语言中对二进制位的访问速度比文本文件快

C、C语言中,随机读写方式不使用于文本文件

D、C语言中,顺序读写方式不使用于二进制文件

19有以下程序段

  int m=0,n=0; char c='a';

  scanf("%d%c%d",&m,&c,&n);

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

若从键盘上输入:10A10,则输出结果是______。

A10,A,10   B10,a,10   C10,a,0   D10,A,0

20有以下程序

main()

{ int   i;

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

    switch(i)

    { case  1: printf("%d",i);

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

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

     }

}

执行后输出的结果是______

A011122   B012   C012020  D120

21有以下程序

main()

{  int  x[8]={8,7,6,5,0,0},*s;

   s=x+3;

   printf("%d\n",s[2]);

}

执行后输出结果是______

A、随机值   B、0   C、5  D、6

22有以下程序

main()

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

  if(a>b>c)

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

  else if((c-1>=d)==1)

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

  else 

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

}

执行后输出的结果是______

A、2   B、3   C、4  D、编译时有错,无结果

23有以下程序

main()

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

  while(i<7&&p[i]%2){k=k+p[i]; i++;}

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

}

执行后输出的结果是______

A58     B56    C45   D24

24有以下程序

main()

{  union{  unsigned  int  n;

           unsigned  char  c;

        }ul;

   ul.c='A';

   printf("%c\n",ul.n);

}

执行后输出结果是______

A、产生语法错  B、随机值   C、A  D、65

25有以下程序

main()

{ int i=10,j=1;

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

}

执行后输出的结果是______

A、9,2   B、10,2   C、9,1   D、10,1

26、以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是______

Amain()

   {int  *p; fun(p); }

   int fun(int *p)

   { int  s; p=&s;}

Bmain()

   {int  *p;fun(&p);}

   int fun(int **p)

   {int s; *p=&s;}

C#include<stdlib.h>

   main() {int *p;fun(&p);}

           int fun(int **p)

          {*p=(int*)malloc(2);}

 

D#include<stdlib.h>

   main() {int *p;fun(p);}

           int fun(int *p)

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

27有以下程序

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,e,f;

 d=f1(a,b);     d=f1(d,c);

 e=f2(a,b);     e=f2(e,c);

 f=a+b+c-d-e;

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

}

执行后输出的结果是______

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

28、有以下程序

void  f(int  x,int  y)

{ int  t;

  if(x<y){ t=x; x=y; y=t; }

}

main()

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

  f(a,b);  f(a,c);  f(b,c);

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

}

执行后输出的结果是______

A3,4,5   B5,3,4   C5,4,3   D4,3,5

29有以下程序

main()

{int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;

 pa=a;

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

   if(i<2)  pa[1][i]=pa[1][i]-1;

   else   pa[1][i]=1;

 printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

}

执行后输出结果是______

A7   B6   C8   D、无确定值

30有以下程序

int  *f(int  *x,int  *y)

{  if(*x<*y)

      return   x;

    else

      return   y;

}

main()

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

   p=&a;     q=&b;

   r=f(p,q);

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

}

执行后输出结果是______

A7,8,8    B7,8,7   C8,7,7   D8,7,8

31有以下程序

main()

{  char  *s[]={"one","two","three"},*p;

   p=s[1];

   printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是______

An,two    Bt,one   Cw,one   Do,two

32以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。

#include  <stdio.h>

main()

{  FILE  *fout; char  ch;

   fout=fopen('abc.txt','w');

   ch=fgetc(stdin);

   while(ch!='#')

   {  fputc(ch,fout);

      ch =fgetc(stdin);

   }

   fclose(fout);

}

出错的原因是______

A、函数fopen调用形式有误   B、输入文件没有关闭

C、函数fgetc调用形式有误   D、文件指针stdin没有定义

33、以下能正确定义数组并正确赋初值的语句是______

Aint  N=5,b[N][N];                   Bint  a[1][2]={{1},{3}};

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

34有以下程序

main()

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

   int  i,j,k=2;

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

   {printf("%d ",m[k][i]);}

}

执行后输出结果是______

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

35、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define  N  10

void  arrin(int  x[N])

{ int i=0;

  while(i<N)

  scanf("%d",______);

}

在下划线处应填入的是______

Ax+I     B&x[i+1]   Cx+(i++)   D&x[++i]

36有以下程序

main()

{  char s[]="\n123\\";

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

}

执行后输出结果是______

A、赋初值的字符串有错   B、6,7    C、5,6   D、6,6

37、设有如下说明

typedef struct

{int  n;char  c;double  x;}STD;

则以下选项中 ,能正确定义结构体数组并赋初值的语句是______

ASTD  tt[2]={{1,'A',62},{2,'B',75}};

BSTD  tt[2]={1,"A",62,2,"",75};

Cstruct  tt[2]={{1,'A'},{2,'B'}};

Dstruct  tt[2]={{1,"A",62.5},{2,"B",75.0}};

38以下叙述中正确的是______

A、全局变量的作用域一定比局部变量的作用域范围大

B、静态(static)类别变量的生存期贯穿于整个程序的运行期间

C、函数的形参都属于全局变量

D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值

39char型变量x中的值为10100111,则表达式(2+x)(~3)的值是______

A10101001     B10101000    C11111101    D01010101

40有以下程序

main()

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

  if((j++||k++)&&i++)   printf("%d,%d,%d\n",i,j,k);

}

执行后输出的结果是______

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

41、设有如下定义:

struct  ss

{  char  name[10];

   int   age;

   char  sex;

} std[3],*p=std;

下面各输入语句中错误的是______

Ascanf("%d",&(*p).age);   Bscanf("%s",&std.name);

Cscanf("%c",&std[0].sex); Dscanf("%c",&(p->sex));

42若有以下程序段:

int  m=0xabc,n=0xabc;

m-=n;

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

执行后输出结果是______

A0X0   B0x0   C0   D0XABC

43有以下程序

main()

{ char  a,b,c,*d;

  a='\'; b='\xbc';

  c='\0xab'; d="\0127";

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

}

编译时出现错误,以下叙述中正确的是______

A、程序中只有a='\';语句不正确      Bb='\xbc';语句不正确

Cd="\0127";语句不正确            Da='\'; c='\0xab';语句都不正确

44有以下程序

main(int  argc,char  *argv[])

{  int  n,i=0;

   while(argv[1][i]!='\0')

  { n=fun();  i++;}

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

}

int  fun()

 { static  int  s=0;

   s+=1;

   return   s;

}

假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令

  exam  123

则运行结果为______。

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

45有以下程序

main()

{ int  i=0,s=0;

  do{

       if(i%2){i++;continue;}

       i++;

       s+=i;

     } while(i<7);

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

}

执行后输出的结果是______

A、16  B、12  C、28  D、21

46、以下叙述正确的是______

A、C语言比其他语言高级

B、C语言可以不用编译就能被计算机识别执行

C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D、C语言出现的最晚、具有其他语言的一切优点

47、若有一些定义和语句

  #include <stdio.h>

  int  a=4,b=3,*p,*q,*w;

  p=&a;q=&b;w=q;q=NULL;

则以下选项中错误的语句是______

A*q=0;   Bw=p;   C*p=va;   D*p=*w;

48若要说明一个类型名STP,使得定义语句STP  s;等价于char  *s;,以下选项中正确的是______

Atypedef STP  char *s;     Btypedef  *char  STP;

Ctypedef  STP   *char;     Dtypedef  char*  STP ;

49若有以下程序段(n所赋的是八进制数)。

int  m=32767,n=032767;

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

执行后输出结果是______

A32767,32767   B32767,032767  C32767,77777   D32767,077777

50、有以下程序

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

{  int  t;

   if (i<j)

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

      fun(a,++i,--j);

   }

}

main()

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

  fun(a,0,5);

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

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

}

执行后输出结果是______

A6 5 4 3 2 1  B4 3 2 1 5 6  C4 5 6 1 2 3  D1 2 3 4 5 6

二、填空题

1一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件______

2设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点。

3数据的逻辑结构在计算机存储空间中的存放形式称为数据的______

4Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。

5数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

6设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。

main()

{  int   findbig(int,int,int);

   int  (*f)(),x,y,z,big;

   f=______;

   scanf("%d%d%d",&x,&y,&z);

   big=(*f)(x,y,z);

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

}

7若有程序

main()

{ int  i,j;

  scanf("i=%d,j=%d",&i,&j);

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

}

要求给i10,给j20,则应该从键盘输入______

8若有以下程序

main()

{ int  p,a=5;

  if(p=a!=0)

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

  else

         printf("%d\n",p+2);

}

执行后输出结果是______

9若有以下程序

main()

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

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

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

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

}

执行后输出结果为______

10、若有以下程序

main()

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

  int i,j,s=0;

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

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

     { if(a[i][j]<0) continue;

       if(a[i][j]==0) break;

       s+=a[i][j];

     }

    }

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

}

执行后输出结果是______

11、已有文本文件test.txt,其中的内容为:Helloeveryone!。以下程序中,文件test.txt已正确为""而打开,由此文件指针fr指向文件,则程序的输出结果是______

 #include  <stdio.h>

 main()

 {  FILE  *fr; char  str[40];

    ......

    fgets(str,5,fr);

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

    fclose(fr);

 }

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

#define  MCRA(m)     2*m

#define  MCRB(n,m)  2*MCRA(n)+m

main()

{  int  i=2,j=3;

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

}

13、函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

          1

          1   1

          1   2   1

          1   3   3   1

          1   4   6   4   1

                  .

                  .

                  .

其构成规律是:

1) 第0列元素和主对角线元素均为1

2) 其余元素为其左上方和正上方元素之和

3) 数据的个数每行递增1

请将程序补充完整。

#define  N   6

void   yanghui(int   x[N][N])

 { int  i,j;

   x[0][0]=1;

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

   {  x[i][0]=______=1;

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

         x[i][j]=______;

   }

 }

14、若有以下程序

 int  f(int  x,int  y)

 {   return(y-x)*x;  }

 main()

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

    d=f(f(3,4),f(3,5));

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

 }

执行后输出结果是______

15、若有以下程序

 main()

 {  char   a;

    a='H'-'A'+'0';

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

 }

执行后输出结果是______

16、以下函数的功能是删除字符串s中的所有数字字符。请填空。

 viod  dele(char  *s)

 {  int  n=0,i;

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

          if(______)

             s[n++]=s[i];

    s[n]=______;

 }

17、设有以下定义

  struct   ss

  { int  info; struct  ss   *link;}x,y,z;

  且已建立如下图所示链表结构:

 _____    _____    _____

|  |  |  |  |  |  |  |  |

|  | -||  | -||  |  |

|__|__|  |__|__|  |__|__|

   x        y        z

    

  请写出删除结点y的赋值语句______

18、若有语句

int i=-19,j=i%4;

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

则输出的结果是______

第一套笔试题答案:

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

答案

B

C

A

B

B

A

C

D

B

D

C

C

B

D

题号

15

16

17

18

19

20

21

22

23

24

25

26

27

28

答案

B

A

D

D

A

A

B

B

D

C

B

C

C

D

题号

29

30

31

32

33

34

35

36

37

38

39

40

41

42

答案

A

B

C

A

D

C

C

C

A

B

D

C

B

C

题号

43

44

45

46

47

48

49

50

 

 

 

 

 

 

答案

D

A

A

C

A

D

A

A

 

 

 

 

 

 

填空题答案:1、可重用性 或 重用性或 复用性 或 可复用性  2、250  3、模式 或 逻辑模式 或 概念模式  4、数据结构  5、概念设计阶段 或 数据库概念设计阶段 6、findbig

7i=10,j=20   81    95 0 3   1058   11Hell    1216  13x[i][i]   14x[i-1][j-1]+x[i-1][j] x[i-1][j]+x[i-1][j-1]   159  167  17!(isdigit(s[i]) ) !(s[i]>='0'&&s[i]<='9') s[i]<'0'||s[i]>'9' isdigit(s[i])==0 *(s+i)<'0'||*(s+i)>'9' !(*(s+i)>='0'&&*(s+i)<='9') !(isdigit(*(s+i))) isdigit(*(s+i))==0   18'\0' 0 NULL   19x.link=&z; 或 x.link=y.link; 或 x->link=y->link; 或 x.link=x.link->link; 或 x.link=*(x.link).link;

20-3