一、单项选择题:(共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↙。程序的运行结果是_______。
|
|
|
|