二级C语言备考9

一、单选   共40题 (共计40分)

第1题 (1.0分)        题号:6132        难度:中        第1章

以下叙述正确的是

A:通过分解成简单子任务,可以完成任何复杂任务

B:每个结构化程序都要包含全部三种基本结构

C:C语言程序的所有自定义函数只能写在同一个源文件中

D:C语言程序允许使用多个main函数,只要它们的函数体各不相同即可

答案:A

第2题 (1.0分)        题号:6597        难度:中        第2章

有以下程序

#include

main()

{

   int  a, b, c=241;

   a = c/100 % 9;

   b = ( -1 )&&( -1 );

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

}

程序运行后的输出结果是

A:2,1

B:6,1

C:6,0

D:2,0

答案:A

第3题 (1.0分)        题号:7190        难度:较易        第2章

以下选项中合法的实型常量是

A:0

B:3.13e-2.1

C:0.914

D:2.0*10

答案:C

第4题 (1.0分)        题号:6869        难度:中        第2章

若有定义语句:int  x=10; ,则表达式x-=x+x的值为().

A:0

B:-20

C:-10

D:10

答案:C

第5题 (1.0分)        题号:7103        难度:中        第2章

若有以下程序

    #include

    main()

    {  int  a=0,b=0,c=0;

       c= (a -= ++a), (a+=b, b+=4);

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

    }

则程序的输出结果是

A:0,4,0

B:0,4,4

C:1,4,1

D:1,4,4

答案:A

第6题 (1.0分)        题号:6529        难度:中        第3章

若有定义:int a,b,c;,想通过语句:scanf("%d,%d%d",&a,&b,&c);把1、2、3分别输入给变量a、b、c,则正确的键盘输入是().

A:1,2,3<回车>

B:1,23<回车>

C:1<回车>23

D:1<回车>2<回车>3

答案:B

第7题 (1.0分)        题号:6322        难度:中        第3章

设有如下语句:

        int k=0;  

        k=printf("OK\n");

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

A:printf必须作为独立语句出现

B:变量k得到的是输出的可见字符个数2

C:变量k得到的是输出字符的总个数3

D:变量k仍保持初值0

答案:C

第8题 (1.0分)        题号:7194        难度:较易        第3章

有以下程序

    #include

    main()

    {  int  x=35, B;   char  z='B' ;

       B = (( x ) && ( z <'b' ));

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

    }

程序运行后的输出结果是

A:1

B:0

C:35

D:66

答案:A

第9题 (1.0分)        题号:7046        难度:较易        第4章

以下选项中与

    if(a==1)a=b;

    else a++;

语句功能不同的switch语句是

A:switch(a==1)

{case 0:a=b;break;

  case 1:a++;

}

B:switch(a)

{case 1:a=b;break;

  default : a++;

}

C:switch(a)

{default:a++;break;

  case 1:a=b;  

}

D:switch(a==1)

{case 1:a=b;break;

  case 0:a++;

}

答案:A

第10题 (1.0分)        题号:6462        难度:中        第4章

以下选项中,当且仅当x的绝对值在1至6范围内表达式值为"真"的是( ).

A:(x>=-6)&&(x<=-1)||(x>=1)&&(x<=6)

B:(x>=1)&&(x<=6)&&(x>=-6)&&(x<=-1)

C:(x>=-6)||(x<=-1)||(x>=1)||(x<=6)

D:(x>=1)&&(x<=6)||(x>=-1)&&(x<=-6)

答案:A

第11题 (1.0分)        题号:6930        难度:中        第4章

有如下嵌套的if语句

    if(a

        if(a

        else  k=c;

    else

        if(b

        else  k=c;

以下选项中与上述if语句等价的语句是

A:k=(ac)?b:c);

B:k=(a

C:k=(a

D:k=(a

答案:B

第12题 (1.0分)        题号:7138        难度:较易        第4章

若有以下程序

    #include

    main()

    {  int  a=1,b=2,c=3,d=4, r=0;

       if (a!=1) ;  else  r=1;

       if (b==2)  r+=2;

       if (c!=3);  r+=3;

       if (d==4)  r+=4;

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

    }

则程序的输出结果是

A:3

B:7

C:6

D:10

答案:D

第13题 (1.0分)        题号:6018        难度:中        第5章

有以下程序

#include   

main( )

{

    char  ch = 'B';

    while (ch < 'E')

    {

        printf("%d", ch - 'A');

        ch++;

    }

    printf("\n");

}

程序运行后的输出结果是

A:123  

B:ABC   

C:abc   

D:012

答案:A

第14题 (1.0分)        题号:7225        难度:较易        第5章

以下叙述中正确的是

A:循环发生嵌套时,最多只能两层

B:三种循环for,while,do-while可以互相嵌套

C:循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

D:for语句的圆括号中的表达式不能都省略掉

答案:B

第15题 (1.0分)        题号:6655        难度:中        第5章

有如下程序

#include

main()

{

    int i;

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

        putchar('9' - i);  printf("\n");

}

程序运行后的输出结果是

A:54321

B:98765

C:9''8''7''6''5'

D:43210'

答案:B

第16题 (1.0分)        题号:6903        难度:中        第5章

有以下程序

    #include

    main()

    { int  y=10;

      while(y--);  printf("y=%d\n", y);

    }

程序执行后的输出结果是

A:y=0

B:y=-1

C:y=1

D:while构成无限循环

答案:B

第17题 (1.0分)        题号:6905        难度:较难        第5章

有以下程序

    #include

    main()

    {  int   i=5;

       do

       {  if (i%3==1)

            if (i%5==2)

            {  printf("*%d", i);  break;  }

          i++;

       }  while(i!=0);

       printf("\n");

    }

程序的运行结果是

A:*2*6

B:*3*5

C:*5

D:*7

答案:D

第18题 (1.0分)        题号:6845        难度:中        第5章

有以下程序:

#include   

main()

{ int   y=9;

for(  ;  y>0;  y--)

 if(y%3==0)  printf("%d", --y);

}

程序的运行结果是().

A:852

B:963

C:741

D:875421

答案:A

第19题 (1.0分)        题号:6827        难度:中        第6章

有以下程序:

#include  

main()

{ char  s[]="012xy\08s34f4w2";

int  i, n=0;

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

 if(s[i] >= '0' && s[i] <= '9')  n++;

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

}

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

A:0

B:3

C:7

D:8

答案:B

第20题 (1.0分)        题号:6085        难度:中        第6章

设有以下程序段

        float  a[8] = {1.0, 2.0};

        int  b[1] = {0};

        char  c[] = {"A", "B"};

        char  d == "1";

以下叙述正确的是

A:只有变量c的定义是合法的

B:只有变量a,b,c的定义是完全合法的

C:所有变量的定义都是完全合法的

D:只有变量a, b的定义是完全合法的

答案:D

第21题 (1.0分)        题号:6306        难度:中        第6章

若有定义语句:int x[][3]={1,2,3,4,5,6}; ,则以下选项中与该语句等价的是().

A:int x[][3]={{1,2,3},{4,5},{6}};

B:int x[][3]={{1,2},{3,4},{5,6}};

C:int x[][3]={{1},{2,3},{4,5,6}};

D:int x[][3]={{1,2,3},{4,5,6}};

答案:D

第22题 (1.0分)        题号:6472        难度:中        第6章

有以下程序

#include   

main( )

{  int  i,j=0;

   char  a[]="How are you!";

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

      if ( a[i] != ' ' )

          a[j++] = a[i];

   a[j] = '\0';

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

}

程序运行后的输出结果是

A:Howareyou!

B:areyou!

C:you!

D:Howareyou!u!

答案:A

第23题 (1.0分)        题号:5938        难度:较易        第6章

有如下程序

#include   

#include   

main( )

{

    printf("%d\n", strlen("0\t\nA011\1"));

}

程序运行后的输出结果是

A:8

B:9

C:7

D:10

答案:A

第24题 (1.0分)        题号:6253        难度:中        第6章

若有定义: char s1[100 ]="name", s2[ 50]="address", s3[80]="person";,要将它们连接成新串:"personnameaddress",正确的函数调用语句是().

A:strcat(strcat(s1,s2),s3);   

B:strcat(s3,strcat(s1,s2));

C:strcat(s3,strcat(s2,s1));

D:strcat(strcat(s2,s1),s3);

答案:B

第25题 (1.0分)        题号:6336        难度:中        第7章

有以下程序

    #include

    #define SWAT(t,a,b)  t=a; a=b; b=t;

    main()

    { int  x=6,y=4,z=3,s=0;

      if(x

      if(x

      if(y

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

    }

执行后的输出结果是

A:6,4,3

B:3,4,6

C:0,3,4

D:3,0,0

答案:D

第26题 (1.0分)        题号:6715        难度:较易        第7章

以下关于函数的叙述中正确的是

A:函数调用必须传递实参

B:函数必须要有形参

C:函数必须要有返回值

D:函数形参的类型与返回之的类型无关

答案:D

第27题 (1.0分)        题号:6822        难度:较难        第7章

有以下程序:

#include  

void fun( int  a[], int  n)

{ int   i, t;

for(i=0; i

}

main()

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

fun(k,5);

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

printf("\n");

}

程序的运行结果是().

A:321678

B:876543

C:1098765

D:345678

答案:A

第28题 (1.0分)        题号:6876        难度:中        第7章

有以下程序:

#include   

int  f( int x,int y)

{ return((y-x)*x); }

main()

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

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

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

}

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

A:7

B:10

C:8

D:9

答案:D

第29题 (1.0分)        题号:6601        难度:中        第7章

函数调用语句:fun( ( exp1, exp2 ), ( exp1, exp2, exp3) ); 含有的实参个数是

A:1

B:4

C:5

D:2

答案:D

第30题 (1.0分)        题号:7325        难度:较难        第7章

有以下程序

    #include

    #define   N    3

    void  fun( int  a[][N], int  b[] )

    {  int  i, j;

       for( i=0; i

       {  b[i] = a[i][0];

          for( j=1; j

              if ( b[i] < a[i][j] )  b[i] = a[i][j];

       }

    }

    main()

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

       fun( x, y );

       for ( i=0; i

       printf( "\n" );

    }

程序运行后的输出结果是

A:3,5,7

B:1,3,5,

C:2,4,8,

D:3,6,9,

答案:D

第31题 (1.0分)        题号:6301        难度:难        第8章

有以下程序

     #include

     int f1(int a)

     {  return a*3;}

     int f2(int *b)

     {  return *b*5;}

     main()

     {

        int x=3,y=5;

        printf("%d ,%d\n",f1(x),f2(&y));

     }

程序的运行结果是().

A:9 ,125

B:9,25

C:3,15

D:3,45

答案:B

第32题 (1.0分)        题号:6084        难度:较难        第8章

有以下程序

#include   

void change( char*  array, int  len )

{  for (len--; len>=0; len--)

        array[len] += 1;

}

main( )

{  int  i;

   char  array[5] = "ABCD";

   change(array, 4);

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

        printf("%c,", array[i]);

}

程序运行后的输出结果是

A:B,C,D,E,

B:A,B,C,D,

C:C,D,E,F,

D:B,D,F,H,

答案:A

第33题 (1.0分)        题号:7174        难度:中        第8章

以下选项中函数形参不是指针的是

A:fun( int  *a ){…}

B:fun( int  a[10] ){…}

C:fun( int  &p ){…}

D:fun( int  p [ ] ){…}

答案:C

第34题 (1.0分)        题号:6603        难度:中        第8章

有以下程序

#include

main()

{

   int  a[10] = { 11,12,13,14,15,16,17,18,19,20 },*p=a,i=9 ;

   printf( "%d,%d,%d\n",a[ p-a ], p[i],*( &a[i] ) );

}

程序运行后的输出结果是

A:11,19,19

B:12,20,20

C:11,20,20

D:12,19,20

答案:C

第35题 (1.0分)        题号:6663        难度:中        第8章

以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是

A:char* str, name[10]; str  = "Hello World";

B:char* str, name[10]; name = "Hello World";

C:char str1[10] = "prog.c", str2[10]; str2 = str1;

D:char head_line[]; head_line = "=============";

答案:A

第36题 (1.0分)        题号:7234        难度:中        第8章

下面选项中的程序段,没有编译错误的是

A:char* sp, s[10]; sp = "Hello";

B:char* sp, s[10]; s = "Hello";

C:char str1[10] = "computer", str2[10]; str2 = str1;

D:char mark[]; mark = "PROGRAM";

答案:A

第37题 (1.0分)        题号:6700        难度:较难        第9章

有如下程序

#include

struct  S

{

    int x, y;

};

main()

{

    struct S  data[2] = {4, 3, 1, 9};

    int i;    

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

        printf("%d,%d;", data[i].x, data[i].y >> 1);

    printf("\n");

}

程序运行后的输出结果是

A:4,1;1,4;

B:4,1;2,4;

C:4,3;1,9;

D:4,3;2,3;

答案:A

第38题 (1.0分)        题号:6859        难度:较易        第9章

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

A:可以通过typedef增加新的类型

B:可以用typedef将已存在的类型用一个新的名字来代表

C:用typedef定义新的类型名后,原有类型名仍有效

D:用typedef可以为各种类型起别名,但不能为变量起别名

答案:A

第39题 (1.0分)        题号:7123        难度:中        第9章

若有以下程序

     #include

     #define  S(x)  x*x

     #define  T(x)  S(x)*S(x)

     main()

     {  int  k=5, j=2;

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

     }

则程序的输出结果是

A:17,289

B:492,401

C:17,37

D:49,289

答案:C

第40题 (1.0分)        题号:7007        难度:易        第10章

设文件指针fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是

A:只能写不能读

B:写操作结束后可以从头开始读

C:可以在原有内容后追加写

D:可以随意读和写

答案:A

二、程序填空   共1题 (共计18分)

第1题 (18.0分)        题号:309        难度:中        第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。

      函数fun的功能是输出这位学生的信息。

-------------------------------------------------------*/

#include     

typedef  struct

{  

        int  num;

        char  name[9];

        char  sex;

        struct { int  year,month,day ;} birthday;

        float  score[3];

}STU;

/***********SPACE***********/

void show(STU  【?】)

{  

        int  i;

        printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,

            tt.birthday.year, tt.birthday.month, tt.birthday.day);

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

/***********SPACE***********/

                printf("%5.1f", 【?】);

        printf("\n");

}

main( )

{        

        STU  std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };

        printf("\nA student data:\n");

/***********SPACE***********/

        show(【?】);

}

答案:

=======(答案1)=======

tt

=======(答案2)=======

tt.score[i]

=======(答案3)=======

std

三、程序改错   共1题 (共计18分)

第1题 (18.0分)        题号:300        难度:易        第2章

/*------------------------------------------------------    

【程序改错】

--------------------------------------------------------

功能:编写函数fun求20以内所有5的倍数之积。

------------------------------------------------------*/

#include

#define N 20

int fun(int m)

{

  /**********FOUND**********/

  int s=0,i;

  for(i=1;i

    /**********FOUND**********/

    if(i%m=0)

      /**********FOUND**********/

      s=*i;

  return s;

}

main()

{

  int sum;

  sum=fun(5);

  printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum);

}

答案:

=======(答案1)=======

int  s=1 , i ;

=======(答案2)=======

if(i%m==0)

=========或=========

if(0==i%m)

=========或=========

if(!(i%m))

=======(答案3)=======

s=s*i;

=========或=========

s=i*s;

=========或=========

s*=i;

四、程序设计   共1题 (共计24分)

第1题 (24.0分)        题号:205        难度:中        第1章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:编程求100以内所有能同时被5和7整除的自然数之和。

  

-------------------------------------------------------*/

# include "stdio.h"         

main()

{  

    int i,s=0;    

    /**********Program**********/

    /**********  End  **********/

    printf("%d",s);

}        

答案: for(i=1;i<=100;i++)        

      if(i%5==0&&i%7==0) s=s+i;

你可能感兴趣的:(c语言,算法,开发语言)