c语言备考习题及部分答案.docx

上传人:b****5 文档编号:5095017 上传时间:2022-12-13 格式:DOCX 页数:25 大小:23.36KB
下载 相关 举报
c语言备考习题及部分答案.docx_第1页
第1页 / 共25页
c语言备考习题及部分答案.docx_第2页
第2页 / 共25页
c语言备考习题及部分答案.docx_第3页
第3页 / 共25页
c语言备考习题及部分答案.docx_第4页
第4页 / 共25页
c语言备考习题及部分答案.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

c语言备考习题及部分答案.docx

《c语言备考习题及部分答案.docx》由会员分享,可在线阅读,更多相关《c语言备考习题及部分答案.docx(25页珍藏版)》请在冰豆网上搜索。

c语言备考习题及部分答案.docx

c语言备考习题及部分答案

一、判断题

1. continue 语句可以用于switch结构中。

( × )

 2. break语句只能用于循环语句中。

(×  )

3. do......while循环语句至少要执行一次循环体。

4. 语句while(!

E);中的条件!

E等价于E==0。

(       )

5. 语句for(; ; ) {循环体} 和 while

(1) {循环体}是等价的。

(       )

6. 在C语言中,for语句既可以用于计数类型循环又可以用于条件类型循环。

二、单选题

  

1. 若N为整型变量,则for(N=10;N=0;N--);循环里的循环体被( D )。

A) 无限循环      B) 执行10次   C) 执行一次      D) 一次也不执行

  2. 下列程序段运行后i的值是(C )。

int i=10

switch(i+1)

 {case 10:

i++;break;

 case 11:

++i;

 case 12:

 ++i;break;

 default:

i=i+1;

 }

A)11  B)13  C)12  D)14

 3. 下面的程序,描述正确的是(B )

main()

{ int x=3;

 do

  {printf("%d\n",x-=2);}

  while(!

(--x));

}

(A)输出的是1   (B)输出的是1和-2     (C)输出的是3和0  (D)是死循环

  4. 执行下面程序后,a的值是(B  )。

    #include <>

    void main ()

     {  int a;

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

     }

 (A)65     (B)20     (C)15     (D)10

  5. 以下程序的输出结果为( D )。

#include <>

 main()

{ int i;

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

  printf("%d",i);

}

(A) 0   (B) 9  (C) 09  (D) 10

6. C语句for(;;){ ……}是指(B  )。

(A)无意义    (B)无限循环    (C)循环执行1次   (D)循环执行0次

  7. 以下程序的输出结果是:

A

  main ( )

  {  int n = 4

    while (n--)printf ("%d",--n);

  }

A)2 0         B)3 1       C)3 2 1      D)2 1 0

  8. 设int a=1,则执行完循环While(a++<5);a的值是:

A

A)6       B)5       C)1        D)-264

  9. 在下列for循环中,其循环次数是( B )

for(x=1,y=0;(y!

=123)&&(x<4); x++);

 A)4  B)3    C)1   D)无数多次

  10. 有如下程序 

main( ) 

{ int x=1,a=0,b=0; 

switch(x){ 

case 0:

 b++; 

case 1:

 a++;

case 2:

 a++;b++;

} 

printf(“a=%d,b=%d\n”,a,b); 

} 

该程序的输出结果是 ( A)

A) a=2,b=1   

B) a=1,b=1  

C) a=1,b=0   

D) a=2,b=2

  11. 若有定义float x,y;int a,b;则合法的switch语句是(C )

(A)switch(a)            

  {case 3+x:

printf("abc");      

   case 4:

printf("123abc");}     

(B)switch(a)

  case 3 printf("abc");

  case 4 printf("123abc");}

(C)switch(b)                

  {default:

 a++;          

   case 1:

printf("abc");        

   case 1+2:

printf("1234");      

  } 

(D)switch(a+b); 

  {case 1+2:

printf("1234"); 

  case 1:

printf("abc");

  default:

 a++;

 12. 循环语句for(x=0,y=0;(y!

=123)||(x<4);x++);的循环次数是(C )。

(A)3   

(B)4    

(C)无限次   

(D)不确定次

  13. 下述程序的输出结果是( B)

  #include <>

  void main()

  {int x=9;

 for (;x>0;x--)

 {if (x%3= =0)

  {printf("%d",--x);

  continue;

  }

  }

 }

(A)741   

(B)852   

(C)963   

(D)875421

  14. 假定a和b为int型变量,则执行以下语句后b的值为(D )

  a=1;b=10;

  do {b-=a;a++;}

  while (b--<0);

(A)9   

(B)-2   

(C)-1  

(D)8

  15. 循环语句for (x=0,y=0;(y!

=123)||(x<4);x++);的循环执行(A )

 (A)无限次    (B)不确定次   (C)4次   (D)3次  

16. 设x和y均为int型变量,则执行下面的循环后,y的值为(C )

  for(y=1,x=1;y<=50;y++)

 {if (x>=10) break;

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

  x-=3;

 }

(A)2  

(B)4    

(C)6    

(D)8

  17. 语句while(!

e==0);什么时候将会陷入死循环(B )

A)e==0  B)e!

=0  C)e!

=1  D)e!

=-1

  18. 执行下面程序段的结果是(B  )。

  int x=23;

  do 

  { printf("%2d",x--);

  }while (!

x);

 (A)打印出321   (B)打印出23   (C)不打出任何内容   (D)陷入死循环

  19. 循环语句for(a=0,b=0;(b!

=45)||(a<5);a++);的循环次数是( D )

(A) 4   (B) 3    (C) 5   (D) 无数多次

  20. 以下不是死循环的语句( D )。

(A) for ( ; ; x ++= i);

(B) while 

(1) {x++;}

(C) for ( i = 10; ; i-- ) sum -= i;

(D) for ( ; (c = getchar()) !

= ‘\n’;) sum -= i;

  21. 若 int x = 3; 且有下面的程序片段,则输出结果为( C )。

   do 

      { printf ( "%d" , x -= 2 );

      }while ( !

( --x ));

(A) 1   (B) 30  (C) 1-2  (D) 死循环

  22. 以下程序的输出结果是( A  ) 》

 main ( )

   { int n = 4 ;

    while (n--) 

     printf ("%d",--n); } 

 A)20   B)31    C)321    D)210 

  23. 语句while (!

E);中的表达式!

E等价于( A ) 。

 A)E= =0    B)E!

=1     C)E!

=0      D)E==1

  24. 以下程序段(C  )。

   int x=-1;

   do {x=x*x;} 

        while (!

x);                                                   A)是死循环     B)循环执行2次    C)循环执行1 次    D)有语法错0

  25. 对以下程序段,描述正确的是( C) 。

   int k=5;   

  while (k=0) k=k-1;

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

 A)循环体被执行了5次                B)循环体是无限循环

 C)循环体一次也不执行               D)循环 体被执行一次

  26. 以下语句执行完后i 的值为( A  )。

 for(x=0,y=3,i=0;(y>3)&&(x<4);x++,y++) i++; 

 A)0    B)1    C)2     D)3 

  27. 下面程序的运行结果是(  C )。

   main( )

    {int x=0,y=0;

     while 

(1) y=++x;  

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

         } 

A)1    B)控制表达式非法         C)无限循环       D)0

  28. 下面程序段的输出结果是(C ) 。

   int x=3; 

   do {printf("%d",x-=2);} 

        while (!

(--x));                                             A) 1    B) 130    C)1-2    D) 死循环

 29. 执行下列程序段之后,b的值为(  D  ) 。

  int a=1,b=10;  

  do {b-=a; a++;} 

  while(b--<0); 

 A)9   B)-2    C)-4   D)8 

  30. 在下述程序中,判断i>j共执行了( D)次。

  #include <>

  void main()

  {int i=0,j=10,k=2,s=0;

    for (;;)

   {i+=k;

    if (i>j)

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

          break;

           }

    s+=i;

   }

  }

 (A)4   (B)7   (C)5    (D)6

三、多选题

  1. 在下列语句所构成的程序结构中,break语句和continue语句均可使用的是(BCD )

(A)用goto语句和if语句构成的循环  (B)while循环 (C)do-while循环  

(D)for循环   (E)switch语句构成的分支结构 

  2. 与for(表达式1;;表达式3);语句等价的选项有( ACE)。

(A)for(表达式1;1;表达式3);  (B)for(表达式1;0;表达式3);

(C)表达式1;while

(1)表达式3;  (D)表达式1;while(0)表达式3;

(E)表达式1;while(3)表达式3; 

  3. 在while(<表达式>)中,用于表达式等于0时循环,否则退出循环的表达式可以写成( BD  )。

A) while(x!

=0)  B) while(x==0)  C) while(x)  D) while(!

x)  E) while(x=0)

  4. 在C语言中,下列说法正确的有(BC )。

(A)"do 语句体 while(条件)"中的语句体可能一次也不会执行

(B)"do 语句体 while(条件)"中当条件为0时将结束循环

(C)for(表达式1;表达式2;表达式3);中的表达式1无论如何都会执行一次

(D)for循环只能用于循环次数已确定的情况

(E)do-while语句和while语句在任何情况下完成的功能等价

 5. 在下列选项中,构成死循环的程序段是( ACE  )。

A) int i=100;           B) int k=100;            C) int s=36;

  while

(1)                do                         while(s);

   {i=i%100+1;            {k++;                     --s;

    if(i>100) break;              }while(k>=1000);

    }

D) int x=10;                E)for(;;);

  for(;1;x--) if(x==0)break;

四、填空题

 1. 根据以下if语句所给的条件,写出等价的switch语句,使它完成相同的功能,

(假定score取值在所0-100之间)。

请完善程序。

if语句:

if(score<60)     k=1;

else if(score<70)  k=2;

else if(score<80)  k=3;

else if(score<90)  k=4;

else if(score<=100) k=5;

等价的switch语句:

 n=__________;

 if(n<6) ______________;

switch(n)

 { case 5:

 k=1;break;

  case 6:

 k=2;break;

  case 7:

 k=3;break;

  case 8:

 k=4;break;

  _______ k=5;

 }

  

①(INT)(SCORE/10)或SCORE/10

②N=5

③ CASE 0:

 CASE 10:

  2. 设I,j,k均为int型变量,则执行完下面的for循环后,k的值为( 10   )。

   for (I=0,j=10;I<=j;I++,j--) k=I+j;

  3. 以下程序的功能是从键盘上输入一行字符,将其中的小写字母转换为大写字母。

请填空。

                             ____#INCLUDE_______________ 

  main( ) 

   {char c;

    while ((c=getchar( ))!

='\n')

         if (c>='a'&&c<='z' ) 

        {c=c-32; putchar( c);}

          }

  4. 以下程序的功能是求20以内3的倍数之和sum1及剩余数据之和sum2。

请填空。

  main( )

    {int sum1=0,sum2=0,i; 

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

     if(_I%3= =0

_______) 

        sum1+=i;

       else sum2+=i; 

             printf("%d,%d",sum1,sum2);

        }

  5. 下列两个程序段在什么情况下输出结果等价__当输入的数据小于或等于100时

 int i,sum=0;      int i,sum=0;

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

 while(i<=100)      do { sum+=i;

    { sum+=i;        i++;

      i++; }        } while(i<=100)

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

  6. 下面程序用于计算1+(1+2)+(1+2+3)+……+(1+2+3+……+10),请完善程序。

 #include<>

 main()

    {int total,sum,m,n;

     ________________;

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

        {sum=0;

        for(n=1;n<=m;n++)sum=sum+n;

        ___________________;

          }

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

    }①TOTAL=0  ②TOTAL=TOTAL+SUM

  7. 下面程序用于求100~200之间的所有素数。

请填空:

_______________

main()

{int m,n,k;

 for(m=101;m<200;m=m+2)

    {k=sqrt(m);

    for(n=2;n<=k;n++)___________;

      if(n>k)printf("%d\n",m)

     }

   }

  

① #INCLUDE<> ②IF(M%N==0)BREAK

  8. 下面程序从键盘读入50个整数并求其中正整数之和。

请完善程序

main()

{int i,a,sum;

 sum=0;

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

     {scanf("%d",&a);

      if(a<0)___________ ;

         sum=sum+a;

        }

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

    }

  ①CONTINUE

  9. 下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,

否则输出0,请为程序填空。

  main()

   {int I,x,__________;

    scanf("%d",&x);

    for(I=2;I<=x/2;I++)

    if (___________) {y=0;break;}

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

   }①Y=1

② X%I= =0

10. 下述程序的输出结果是 13    。

  #include <>

  void main()

     {int I=0,s=1;

     do 

      s+=I++;

     while (I++<6);

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

       }

  11. 下述程序用"辗转相除法"计算两个正整数m和n的最大公约数。

请填空。

 #include <>

 void main()

  {int m,n,w;

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

        while (n)

        {w= __①M%N_________ ;

        m= n ;

          n= w ;

         }

      printf("%d,m);

      }

  12. 下面程序的功能是输出数且s中最大元素的下标,请填空。

main()

 {int k,p;

 int s[]=[1,-9,7,2,-10,3];

  for (p=0,k=p;p<6;p++)

      if (s[p]>s[k]) _K=P;_____________ 

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

 }

13. 下面程序段中循环体的执行次数是 ______3___ 。

a=10;

b=0;

do{b+=2;a-=2+b;}

while(a>=0);

14. 运行下列程序时,输入数据为"2473<回车>",则程序的输出结果为 ___668977_____ .

#include<>

main()

{int s;

 while((s=getchar())!

=''\n'')

  {switch(s-''2'')

   {case 0:

    case 1:

putchar(s+4);

    case 2:

putchar(s+4);break;

    case 3:

putchar(s+3);

    default:

putchar(s+2);break;

   }

  }

}

15. 如下程序运行后输出的结果是( _____2____ )。

#include <>

void main()

{ int i=0;

  while(++i<3)

   if(i==2)

   break;

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

}

  16. 以下程序完成输出3到1000之间的所有素数。

I%J==0

#include ""

main ()

  { int i,j;

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

         { for ( j=2; j<=i-1; j++)

             if ( __________ ) break;

            if ( j==i ) printf ("%5d ",i);

          }

       }

  17. 以下程序的功能是从键盘上输入一行字符,将其中的小写字母转换为大写字母。

请填空。

                        

#include ""                            

 main( )                                            

   {char c;                                          

    while ((c=_____________)!

='\n')                         

        if (c>='a'&&c<='z' )                         

           { c=c-32;                 

          printf("%c",c);

           }

     }

 GETCHAR( )

  18. 以下程序的功能是:

从键盘上输入若干个学生的成绩,统计计算出平均成绩。

请填空。

                                  

 main(  )                                

 {float sum=,ave,a;               

    int n=0,i;                             

    printf(“Enter mark\n”);           

     scanf(“%f”,&a);                   

      while(a>=                   

          {sum=sum+a;      

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1