C语言期末考试复习题及答案一、选择题:下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确的选项涂写在答案纸上。
答在试卷上不得分。
(1)C语言规定:在一个源程序中,main函数的位置 D 。
A)必须在最后B)必须在系统调用的库函数的后面。
C)必须在最开始。
D)可以任意⑵C 语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符A。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
⑶ 下面四个选项中,均是正确的八进制数或十六进制数的选项是 ______________B ______ 。
A)-10 0x8f -011 B) 010 -0x11 OxflC) 0abc -017 0xc D) 0a12 -0x123 -0xa⑷ C语言中int型数据在内存中占两个字节,则unsegned int取值范围是 A 。
A)0~65535 B)0~32767C)-32767 ~ 32768 D)-32768 ~ 327687(5) 若有定义:int a = 7; floa x = 2.5 , y = 4.7 ;则表达式x + a %3 * (int) (x + y) % 2/4 的值是 DA) 2.750000 B) 0.00000 C) 3.500000 D) 2.500000⑹已知ch是字符型变量,下面不正确的赋值语句是 BA ) ch = 5 + 9 ; B) ch= ' a + b '; C) ch = ' \ 0 '; D)ch= '7' + 6;(7) 设x , y 和z 是int 型变量,且x = 3, y = 4 , z = 5则下面表达式中值为0的是 ______ A _______ 。
A ) !((x < y )&&!z || 1) B) ' x ' && ' y 'C) x ||y+z && y - zD)x <= y(8 )设有程序段int k = 10 ; while ( k = 0 )k = k - 1 ;以下描述正确的是A(9)以下C 程序正确的运行结果是 main () {Io ngy = =23456;printf ( " y=% 3x \ n ", y);printf ( " y=% 8x \ n ", y);printf ( " y=% # 8x \ n ", y);}A)y = 5ba0 5ba0B ) y =5ba0 C)y = 5ba0D ) yy =5ba0y = 5ba0 y = bba0 y5ba0A)循环体语句一次也不执行。
B) 循环是无限循环。
C) while 循环语句执行十次。
D)循环体语句执行一次。
y = 0x5ba0 y= ####5ba0 y =0x5ba0y :=0x5ba0(10)当 a = 1 , b的值是=3 , c =5 d=4 C。
时,则执行完卜 面一段程序后,xif ( a < b )if ( c < d )x = 1;elseif ( a <c )if ( b < d ) x = 2 ;else x = 3 ;else x = :6 ;else x = 7 ;A ) 1B) 3 C) 2D) 6(11)下面程序的运行结果是D。
# in elude "stdio.h "mai n (){ inta = 1 ,b = 10do{ b - = a ;a + + ; }while ( b -- < 0 );printf ( "a =% d ,b ==% d \ n ), a ,b );A ) a = 3 , b = 11B ) a = :4 ,b = 9 C ) a= 1 ,b = -1D ) a = :2 ,b = 8(12 )以下for 循环的执行次数是 B。
for ( x = 0, y = 0; (y = 123 ) && (x<4 ); x + + );(13)以下是死循环的程序段的是A) for ( i = 1 ;{ if ( + + i % 2 = = 0 )continue ;< 0 ) break ; } while ( + + i )if ( + + i < 10) continue ;(14) 若有说明:int a[10]; 则对a 数组元素的正确引用是 ___________B 。
A) a [10 ] D ) a[3.5](15)根据定义和数据的输入方式,输入语句的正确形式为 _______________A ____ 。
已有 定义:float f1,f2;数据输入方 式:4.253.5A ) scanf ("%f%f ",&f1,&f2); B) scanf ("%f ,%f",&f1,&f2);C) sca nf ("%3.2f %2.1f ",&f1,& f2);D) scanf ("%2.1f %3.2f",&f1,&f2); (16)已知ch 是字符型变量,下面正确的赋值语句是 ________________ C 。
A ) ch = '123'; B) ch=' \08 ';C) ch =' \xff ';D) chA)无限次B ) 4次C ) 0 次。
D ) 3 次。
B) i = 32767do { if ( iif ( + + i % 3 = = 0 )break ;C) for ( i = 1 ;} D) i = 1while ( i --)B ) a[10 - 10]C ) a ( 5 )—H \讥{ x=x+y; printf ("%f ", x);} else printf("%f",-x);else printf ("%f ", -x); C) if (x>0){x=x+y ; printf ("%f ",x);}; ("%f", x)}else printf ("%f", -x)-x); (18)若 W=1, X=2, Y=3, Z=4W < X ? W : Y < Z ?A ) 1B ) 3C ) 4 (19)以下程序段Bx = -1;do {x = x*x ; } while (! x); A)是死循环 C )循环执行二次(20)逻辑运算符两侧运算对象的数据类型B。
A )只能是0或1B)可以是任何类型的数据 C)只能是整型或字符型数据 D )只能是0或非0正数 (21)下面程序中有错误的行是C。
(前面数 字表示行 号)1、 main ( )5、scanf ( "% d ",& a );D) if(x>0){x=x+y ; peintf;else printf ("%f",则条件式:Y : Z 的值是 A 。
D ) 2B )循环执行一次 D )有语法错误2、 {+ )a[0] = a[0] +6、for ( i =1 ; i < 3; i +A) 1,2, 0 B) 2, 1, 0C) 1, 2, 1D) 2, 1,a=1; b=2; c=2;while (a<b<c) {t = a ; a = b ; b = t ; c - - ;} printf ("%d , %d, %d", a, b, c);3、intd \ n ", a[0]);a[3 ] = {1};4、 inti ;A) 3B ) 6C )(22)下面的程序段 D。
7、 printf ( " a[0] = %8、 }for ( t = 1 ; t < = 100, t + + ) {sea nf ("%d", &x);if ( x <0 )continue;printf ("%3d", t ); }A)当x < 0 时整个循环结束 出 C) printf函数永远也不执行整数B )当x >= 0 时什么也不输D)最多允许输出100个非负(23)以下 对一维整型数组a 的正确 说明是A )int a (10) B) int n = 10; a[ n ]; C) int n;sea nf ("%d", &n); int a [n];(24)下面程序的运行结 果是 D) # defi neSIZE 10int a [SIZE];A 。
(25)若有说明:int a[3][4]; 则对数组元素的非法引用是_____________B __________ 。
A) a[0][2*1] B) a[0][4] C) a[4-2][0] D)a[1][3](26)对以下说明的正确理解是_____________ B ____________ 。
int a[10] = {6, 7, 8, 9, 10}A)将5个初值依此赋给a [1] 至a[5] B)将5个初值依此赋给a [0] 至a [4]C)将5个初值依此赋给a⑹ 至a[10] D)因长度与初值个数不同,故语句错误(27) 若二维数组a有m列,则在a[ i ][ j ] 前的元素个数为 Am + j A) i * m + j B) j * m + i+ 1C) i*m + j -1 D) i(28) 以下程序段运行的结果是 D 。
char c[5] ={ ' a ', ' b ', ' \ 0 ', ' c ',' \ 0 ' };printf ( " % s ", c );A) ' a ' ' b ' B) ab c C) abc D) ab(29) 以下正确的函数定义形式是 A 。
x ;A) double fun (int x , int y )int y )B) double fun ( intx , C) double fun ( int x , int y ): int y );1 D) double fun ( i nt(30)以下不正确的说法是_____________ D ________ 。