二级C语言笔试1

(总分96,考试时间90分钟)

一、选择题

下列各题A)、B)、C)、D)4个选项中,只有1个选项是正确的。

1. 有以下程序:

    void sum(int  a[])

      a[0]=a[-1]+a[1];  

    main()

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

       sum(&a[2]);

       printf(“%d\n”,a[2]);

    

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

A. 6         B. 7

C. 5         D. 8

2. 若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是(    )。

A. ++x,y=x–         B. x+1=y

C. x=x+10=x+y         D. double(x)/10

3. 有以下程序段:

    main()

    

      int a=5,*b,**c;

      c=&b;    b=&a;

      ……

    

    程序在执行了“c=&b; b=&a;”语句后,表达式“**c”的值是(    )。

A. 变量a的地址         B. 变量b中的值

C. 变量a中的值         D. 变量b的地址

4. 下列叙述中正确的是(    )。

A. break语句只能用于switch语句

B. 在switch语句中必须使用default

C. break语句必须与switch语句中的case配对使用

D. 在switch语句中,不一定使用break语句

5. 有以下程序:

    #include  <stdio.h>

    int fun(char s[])

     int  n=0;

      while(*s<=’9’&&*s>=’0′)  n=10*n+*s-‘0’;s++;

      return(n);

    

    main()

     char s[10]=’6′,’1′,’*’,’4′,’*’,’9′,’*’,’0′,’*’;

       printf(“%d\n”,fun(s));

    

    程序的运行结果是(    )。

A. 9         B. 61490

C. 61         D. 5

6. 有以下程序;

    main()

     char s[]=”aaiou”,*ps;

      ps=s;   printf(“%c\n”,*ps+4);

    

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

A. a         B. e

C. u         D. 元素s[4]的地址

7. 数据库技术的根本目标是要解决数据的(    )。

A. 存储问题         B. 共享问题

C. 安全问题         D. 保护问题

8. 有以下程序:

    main()

    

      int a[10]=1,2,3,4,5,6,7,8,9,10),*p=&a[3],*q=p+2;

      printf(“%d\n”,*p+*q);

    

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

A. 16         B. 10

C. 8         D. 6

9. 有以下程序:

    #include <stdio.h>

    main()

    

      FILE  *fp;

      int   i,k,n;

       fp=fopen(“data.dar”,”w+”);

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

      

        fprintf(fp,”%d   “,i);

        if(i%3==0)

           fprintf(fp,”\n”);

      

      rewind(fp);

      fscanf(fp,”%d%d”,&k,&n);    printf(“%d%d\n”,k,n);

      fclose(fp);

    

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

A. 0 0         B. 123 45

C. 1 4         D. 1 2

10. 以下不能正确计算代数式sin2()值的C语言表达式是(    )。

A. 1/3*sin(1/2)*sin(1/2)

B. sin(0.5)*sin(0.5)/3

C. pow(sin(0.5),2)/3

D. 1/3.0*pow(sin(1.0/2),2)

11. 以下程序的输出结果是(  )。

    main()

     int  a=0,i;

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

        switch(i)

           casc 0:

            case 3:a+=2;

            case 1:

            case 2:a+=3;

            default:a+=5;

         

      

      printf(“%d\n”,

A. ;

   &nbsp         12. 有以下程序:

    main()

      char str[]=”xyz”,*ps=str;

       while(*ps) ps++;

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

    

    执行后输出结果是(    )。

A. yz

    xyZ

B. z

    yz

C. z

    yz

D. x

    xy

    xyz    xyz

13. 下列叙述中正确的是(    )。

A. 在面向对象的程序设计中,各个对象之间具有密切的联系

B. 在面向对象的程序设计中,各个对象都是公用的

C. 在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小

D. 上述3种说法都不对

14. 若有以下函数首部:

    int fun(double x[10],int  *n)

    则下面针对此函数的函数声明语句中正确的是(    )。

A. int fun(double x, int *n);

B. int fun(double, int);

C. int fun(double *x, int n);

D. int fun(double*, int*);

15. 以下程序中,while循环的循环次数是(  )。

    main()

    

      int i=0;

      while(i<10)

      

        if(i<1) continue;

        if(i==5) break;

        i++;

      

      ……

    

A. 1         B. 10

C. 6         D. 死循环,不能确定次数

16. 可在C程序中用作用户标识符的一组标识符是(    )。

A. and

    _2007

B. Date

    y-m-d

C. Hi

    Dr.Tom

D. case

    Bigl

17. 在关系数据库中,用来表示实体之间联系的是(    )。

A. 树结构         B. 网结构

C. 线性表         D. 二维表

18. 有以下程序段:

    int k=0,a=1,b=2,c=3;

    k=a<b ? b:a;   k=k>c ? c:k;

    执行该程序段后,k的值是(    )。

A. 3         B. 2

C. 1         D. 0

19. 有定义语句:“int x,y;”,若要通过“scanf(“%d,%d”,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是(    )。

A. 11 12<回车>         B. 11, 12<回车>

C. 11,12<回车>         D. 11,<回车>

    12<回车>

20. 有以下程序:

    main()

     int c=35; printf(“%d\n”,c&c);

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

A. 0         B. 70

C. 35         D. 1

21. 设有定义语句:char  c1=92,c2=92;,则以下表达式中值为零的是(    )。

A. c1^c2         B. c1&c2

C. ~c2         D. c1|c2

22. 有以下程序:

    main()

     int   y=10;

      while(y–);  printf(“y=%d\n”,y);

    

    程序执行后的输出结果是(    )。

A. y=0         B. y=-1

C. y=1         D. while构成无限循环

23. 有以下程序:

    #include <stdio.h>

    main()

      FILE *fp;  int i,k=0, n=0;

       fp=fopen(“d1.dat”,”w”);

       for(i=1;i<4;i++)    fprintf(fp,”%d”,i);

       fclose(fp);

       fp=fopen(“d1.dat”,”r”);

       fscanf(fp,”%d%d”,&k,&n);    printf(“%d%d\n”,k,n);

       fclose(fp);

    

    执行后输出结果是(  )。

A. 1 2         B. 123 0

C. 1 23         D. 0 0

24. 有以下程序:

    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

25. 以下选项中非法的表达式是(    )。

A. 0<=x<100         B. i=j==0

C. (char)(65+3)         D. x+1=x+1

26. 设有如下3个关系表:

    

    下列操作中正确的是(    )。

27. 有以下程序:

    void sort(int a[], int n)

    int i,j,t;

      for(i=0;i<n-1;i++)

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

            if(a[i]<a[j])

            

               t=a[i];

               a[i]=a[j];

               a[j]=t;

            

    

    main()

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

       sort(aa+2,5);

       for(i=0;i<10;i++)printf(“%d,”,aa[i]);

       printf(“\n”);

    

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

A. 1,2,3,4,5,6,7,8,9,10,

B. 1,2,7,6,3,4,5,8,9,10,

C. 1,2,7,6,5,4,3,8,9,10,

D. 1,2,9,8,7,6,5,4,3,10,

28. 以下叙述中错误的是(    )。

A. C程序必须由一个或一个以上的函数组成

B. 函数调用可以作为一个独立的语句存在

C. 若函数有返回值,必须通过咖语句返回

D. 函数形参的值也可以传回给对应的实参

29. 下面程序的功能是输出以下形式的金字塔图案:

                  *

                 ***

                *****

               *******

    main()

    int  i,j;

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

         for(j=1;j<=4-i;j++)printf(” “);

          for(j=1;j<=(  );j++)printf(“*”);

          printf(“\n”);

       

    

    在下划线处应填入的是(    )。

A. i         B. 2*1-1

C. 2*i+1         D. i+2

30. 有定义语句: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);

31. 已有定义:char a[]=”xyz”,b[]=’x’,’y’,’z’;,以下叙述中正确的是(    )。

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

C. a数组长度大于b数组长度         D. 以述说法都不对

32. 一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为(    )。

A. 221         B. 219

C. 231         D. 229

33. 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

    

    若有以下程序段:

    q=s;   s=s->next;   p=s;

    while (p->next)  p=p->next;

    p->next=q;    q->next=NULL;

    该程序段实现的功能是(    )。

34. 在结构化程序设计中,模块划分的原则是(    )。

A. 各模块应包括尽量多的功能         B. 各模块的规模应尽量大

C. 各模块之间的联系应尽量紧密         D. 模块内具有高内聚度、模块间具有低耦合度

35. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是(    )。

A. (!a==1)&&(!b==0)         B. (a<b)&&!c||1

C. a&&b         D. a||(b+b)&&(c-

36. 有以下程序:

    #include     <stdio.h>

    main()

     int  a=1,b=2,c=3,x;

       x=(a^b)&c;   printf(“%d\n”,x);

    

    程序的运行结果是(    )。

A. 0         B. 1

C. 2         D. 3

37. 有以下程序:

    main()

    

      char a1=’M’,a2=’m’;

      printf(“%c\n”,(a1,a2));

    

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

A. 程序输出大写字母M         B. 程序输出小写字母m

C. 格式说明符不足,编译出错         D. 程序运行时产生出错信息

38. 有以下程序:

    #include    <string.h>

    main()

    

      char str[][20]=”Hello”,”beijing”,*p=str;

      ptintf(“%\n”,strlen(p+20));

    

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

A. 0         B. 5

C. 7         D. 20

39. 有以下计算公式:

    

    若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是(    )。

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

A. 1         B. 2

C. 3         D. 4

41. 下面选项中不属于面向对象程序设计特征的是(    )。

A. 继承性         B. 多态性

C. 类比性         D. 封装性

42. 若有一些定义和语句:

     #include    <stdio.h>

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

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

    则以下选项中错误的语句是(    )。

A. *q=0;         B. w=p;

C. *p=a;         D. *p=*w;

43. 以下不能定义为用户标识符的是(    )。

A. scanf         B. Void

C. _3com_         D. int

44. 以下叙述中正确的是(    )。

A. 构成C程序的基本单位是函数

B. 可以在一个函数中定义另一个函数

C. main()函数必须放在其他函数之前

D. 所有被调用的函数一定要在调用之前进行定义

45. 以下数组定义中错误的是(    )。

A. int x[][3]=0;

B. int x[2][3]=1,2,3,4,5,6;

C. int x[][3]=1,2,3,4,5,6;

D. int x[2][3]=(1,2,3,4,5,6;

46. 以下程序调用fmdmax函数返回数组中的量大值:

    findmax(int *a,int n)

      int *p,*s;

       for(p=a,s=a;p-a<n;p++)

          if(      )s=p;

       return(*s);

    

    main()

     int  x[5]=12,21,13,6,18;

      printf(“%d\n”,findmax(x,5));

    

    在下划线处应填入的是(  )。

A. p>s         B. *p>*s

C. a[p]>a[s]         D. p-a>p-s

47. 有以下程序;

      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,

48. 下列叙述中错误的是(    )。

A. 在数据库系统中,数据的物理结构必须与逻辑结构一致

B. 数据库技术的根本目标是要解决数据的共享问题

C. 数据库设计是指在已有数据库管理系统的基础上建立数据库

D. 数据库系统需要操作系统的支持

49. 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为(    )。

A. n+1         B. n-1

C. 2n         D. n/2

50. 下列选项中不属于结构化程序设计方法的是(    )。

A. 自顶向下         B. 逐步求精

C. 模块化         D. 可复用

二、填空题

1. 设一棵完全二叉树共有700个结点,则在该二叉树中有  【1】  个叶子结点。

2. 在面向对象方法中,  【2】  描述的是具有相似属性与操作的一组对象。

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

4. 对下列二叉树进行中序遍历的结果为  【4】  。

    

5. 在结构化分析使用的数据流图(DFD)中,利用  【5】  对其中的图形元素进行确切解释。

6. 执行以下程序后的输出结果是  【6】  。

    main()

     int a=10;

      a=(3*5,a+4);   printf(“a=%d\n”,a);

    

7. 以下程序运行后的输出结果是  【7】  。

    main()

     int m=011,n=11;

       printf(“%d  %d\n”,++m,n++);

    

8. 有以下程序:

    main()

     int t=1,i=5;

        for(; i>=0;i–)  t*=i;

        printf(“%d\n”,t);

    

    执行后输出结果是  【8】  。

9. 以下程序的运行结果是  【9】  。

    main()

     int a=2,b=7,c=5;

      switch(a>0)

      

      case 1:

        switch (b<0)

         case 1:printf(“@”); break;

          case 2:pnntf(“!”); break;

        

      case 0:

        switch (c==5)

         case 0:pnntf(“*”); break;

          case 1:printf(“#”); break;

          case 2:printf(“$”); break;

        

      default: printf(“&”);

      

      printf(“\n”);

    

有以下程序段,且变量已正确定义和赋值。

         for(s=1.0, k=1; k<=n;k++)  s=s+1.0/(k*(k/1));

         printf(“s=%f\n\”,s);

     请填空,使下面程序段的功能与之完全相同。

         s=1.0; k=1;

         while(  【10】  )    s=s+1.0/(k*(k+1));   【11】  ;  

         printf(“s-=%f\n\n”,s);

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

    #include  <stdio.h>

    main()

      int  i;

       for(i-‘a’; i<’f’; i++,i++)  printf(“%c”,i-‘a’+’A’);

       printf(“\n”);

    

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

    1

    1 1

    1 2 1

    1 3 3 1

    1 4 6 4 1

    其构成规律是:

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

    ②其余元素为其左上方和正上方元素之和。

    ③数据的个数每行递增1。

    请将程序补充完整。

    #define    N    6

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

      int  i,j;

       x[O][0]=1;

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

          x[i][0]=  【13】  =1;

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

               x[i][j]=  【14】  ;

       

    )

12. 以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

    void sstrcpy(char *s,char *t)

     while(*s++=  【15】  );

    main()

      char str1[100],str2[]=”abcdefgh”;

       sstrcpy(str1,str2);

       printf(“%s\n”,str1);

    

13. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

      【16】  (double,double);

    main()

      double x,y;

       scanf(“%1f%1f”,&x,&y);

       printf(“%1f\n”,max(x,y));

    

    double max(double a,double B) 

      return(a>b ? a:b);

14. 以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

              ABCDE

              FGHI

              JKL

              MN

              O

    请填空完成该程序。

              main()

               int i,j,n;   char  ch=’A’;

                 scanf(“%d”,&n);

                 if(n<11)

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

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

                          printf(“%2c”,ch);

                             【17】  ;

                       

                         【18】  ;

                    

                 

                 else printf(“n is too large!\n”)

                 printf(“\n”0);

              

设有说明;

    struct DATE int year; int month; int day;

    请写出一条定义语句,该语句定义d为上述结构体类型变量,并同时为其成员year、month、day依次赋初值2006、10、1:  【19】  。

15. 以下程序的功能是将宁符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abcl23edf4568h,执行程序后输出:123456。请填空。

    #include  <stdio.h>

    #include  <ctype.h>

    main()

      char  s[80],d[80];   int i,j;

       gets(s);

       for(i=j=0;s[i]!=’\0′;i++)

         if(  【20】  )  d[j]=s[i];j++;

       d[j]=’\0′;

       puts(d);

    

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/f05e2ef0d3.html