第五章 循环结构程序设计

课程名称:C语言程序设计 总分:89 答题时长:100分钟 出卷人:王赛楠

、单项选择题:(共10题,10分)
1 有以下程序段

int k = 10 ;

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

则下面描述中正确的是_______。

while循环执行10次 
循环是无限循环
循环体语句一句也不执行
循环体语句执行一次
2 有以下程序段

int x = 0 , s = 0 ;

while( !x != 0 )  s += ++x ;

printf( "%d" , s ) ;

则_______。

运行程序段输出0  
运行程序段输出1
程序段中的控制表达式是非法的
程序段执行无限次
3 下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。

#include<stdio.h>

int main( )

{

int a , b , t ;

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

while(_______)

{

if( a > b )

{

t = a ;

a = b ;

b = t ;

}

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

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

}

    return 0 ;

}

!a = b
a != b
a == b
a = b
4 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。

#include<stdio.h>

int main( )

{

int a , max = 0 ;

scanf( "%d" , &a ) ;

while(_______)

{

if( max < a )

max = a ;

scanf( "%d" , &a ) ;

}

printf( "%d" , max ) ;

    return 0 ;

}

a == 0
a
!a == 1
!a
5 C语言中while和do-while循环的主要区别是_______。  
do-while的循环体至少无条件执行一次
while的循环控制条件比do-while的循环控制条件严格
do-while允许从外部转到循环体内
do-while的循环体不能是复合语句
6 下面程序的运行结果是_______。   

#include<stdio.h>

int main( )

{

int a = 1, b = 10 ;

  do

{

b -= a ;

a++ ;

}

while( b-- < 0 ) ;

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

    return 0 ;

}

a=3, b=11
a=2, b=8
a=1, b=-1
a=4,b=9
7 若 i为整型变量,则以下循环执行次数是_______。   

for( i = 2 ; i == 0 ; ) printf( "%d" , i-- ) ;

无限次 
0次 
1次 
2次
8 有以下程序

#include<stdio.h>

int main( )

{

int i ;

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

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

    return 0 ;

}

则下面描述中正确的是_______。

输出1
输出2
输出3
死循环
9 for循环语句:for( 表达式1 ; 表达式2 ; 表达式3 )语句,以下叙述正确的是_______。
for语句中的3个表达式一个都不能少
for语句中的循环体至少要执行一次
for语句中的循环体可以是一个复合语句
for语句只能用于循环次数已经确定的情况
10 关于break和continue,以下说法正确的是_______。
break语句只应用在循环体中 
continue语句只应用在循环体中
break是无条件跳转语句,continue不是
break和continue语句的跳转范围不够明确,容易产生错误
、多项选择题:(共1题,2分)
1 下面程序的功能是计算1到10之间的奇数之和及偶数之和。请选择填空。

#include<stdio.h>

int main( )

{

int a , b , c , i ;

a = c = 0 ;

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

{

a += i ;

   _______ (1) ;   

c += b ;

}

printf( "sum of the even = %d\n" , a ) ;

printf( "sum of the odd = %d\n" , _______ (2) ) ;

    return 0 ;

}   

b = i--  

c - 10 

b = i + 1     

c

b = i++ 

c - 11 

b = i - 1

c – b

编程题:(共4题,32分)
1 编写一个程序,输出所有的水仙花数。若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。例如,153是一个水仙花数,因为
2 编写一个程序,输入两个整数,用辗转相除法计算其最大公约数和最小公倍数。
3 编写一个程序,计算s=1!+2!+3!+…+n!。其中n由输入决定。
4 编写一个程序,计算。其中m由输出决定。
程序阅读题:(共9题,45分)
1 下面程序的运行结果是_______。

#include<stdio.h>

#include<math.h>

int main( )

{

       int a = 1 , b = 2 , c = 2 , t ;

       while( a < b < c )

       {

              t = a ;

              a = b ;

              b = t ;

              c -- ;

       }

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

return 0 ;

}

2 有以下程序

 

#include<stdio.h>

int main( )

{

       int a , b , m , n ;

       m = n = 1 ;

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

       do

       {

              if( a>0 )

              {

                     m = 2*n ;

                     b++ ;

              }

              else

              {

                     n = m + n ;

                     a += 2 ;

                     b++ ;

              }

       }

       while( a==b ) ;

       printf( "m=%d n=%d" , m , n ) ;

return 0 ;

}

若输入输入-1 0↙。程序的运行结果是_______。

3 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       char c1 , c2 ;

       int a ;

       c1 = '1';

       c2 = 'A' ;

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

       {

              if(a%2)

                     putchar(c1+a) ;

              else

                     putchar(c2+a) ;

       }

return 0 ;

}

4 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       inti , m = 0 , n = 0 , k = 0 ;

       for(i = 9 ; i<= 11 ; i++ )

       {

              switch(i / 10 )

              {

              case 0 :

                            m++ ;

                            n++ ;

                            break ;

              case 10 :

                            n++ ;

                            break ;

              default :

                            k++ ;

                            n++ ;

              }

       }

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

return 0 ;

}

5 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       int a = 1 , b ;

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

       {

              if(a >= 8 )

                     break ;

              if( a % 2 == 1 )

              {

                     a += 5 ;

                     continue ;

              }

              a = a - 3 ;

       }

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

return 0 ;

}

6 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       int m = 0 , k = 0 , i , j ;

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

       {

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

                     k++ ;

              k = k - j ;

       }

       m = i + j ;

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

return 0 ;

}

7 下面程序的运行结果是_______。

#include<stdio.h>

int main( )

{

       int i , j , x = 0 ;

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

       {

              x++ ;

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

              {

                     if( j % 2 )

                            continue;

                     x++ ;

              }

              x++ ;

       }

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

    return 0 ;

}

8 有以下程序

#include<stdio.h>

#include<math.h>

int main( )

{

       float x , y , z ;

       scanf( "%f,%f" , &x , &y ) ;

       z = x / y ;

       while( 1 )

       {

              if( fabs( z ) > 1.0 ) 

/*fabs()是计算绝对值的函数,包含在math.h文件中,此时计算|Z|*/

              {

                     x = y ;

                     y = z ;

                     z = x / y ;

              }

              else

                     break ;

       }

       printf( "%3.1f\n" , y ) ;

return 0 ;

}

若输入数据3.6,2.4↙。程序的运行结果是_______。

9 有以下程序

#include<stdio.h>

int main( )

{

       char c ;

       c =getchar( );

       while ( c!='\n' )

       {

              switch (c-'2')

              {

                     case 0 :

                     case 1:putchar( c+4 ) ;

                     case 2:putchar( c+4 ) ;

                            break;

                     case 3:putchar( c+3 ) ;

                     case 4:putchar( c+2 ) ;

                     break;

              }

              c =getchar( );

       }

       printf( "\n" ) ;

return 0 ;

}

若输入数据7654↙。程序的运行结果是_______。