C语言期末考试复习题及答案_第1页
C语言期末考试复习题及答案_第2页
C语言期末考试复习题及答案_第3页
C语言期末考试复习题及答案_第4页
C语言期末考试复习题及答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言期末考试复习题及答案一、 选择题:下歹I各题A)、B)、C)、D)四个选项中只有一个是正 确的,请将正确的选项涂写在答案纸上。答在试卷上不得分。(1 ) C语言规定:在一个源程序中,main函数的位置 D 。A)必须在最后B)必须在系统调用的库函数的后面。C)必须在最开始。D)可以任意C 语言中的标识符只能由字母、数字和下划线三种字符组成,且第 一个字符 A 。A)必须为字母或下划线。B)必须为下划线。C)必须为字母D)可以是字母、数字和下划线中的任一种字符。 下面四个选项中,均是正确的八进制数或十六 进制数的选项是 B。A) -10 0x8f -011B) 010-0x11 0xf1C

2、) 0abc -017 0xcD) 0a12-0x123 -0xa C语言中int型数据在内存中占两 个字节,则unsegned int取值范 围是 A oA) 065535B) 032767C) -32767 32768D) -32768 327687(5) 若有 定义:int a = 7; floa x =, y =;则表达式 x + a %3 * (int) (x + y) % 2/4 的值是 D 。A)B) 0.00000 C)D)(6)已知ch是字符型变量,下面不正确的赋值语句是 B 0A) ch = 5 + 9; B) ch= ' a + b ' C) ch = &

3、#39; 0 'D)ch= '7' + '6'(7) 设x , y 和z是int型变量,且x = 3, y = 4 , z = 5则下面表达式中值为0的是 A oA !(x < y )&&!z | 1)B) ' x ' && ' y C) x |y+z && y - z D)x <= y(8 )设有程序段int k = 10 ;while ( k = 0 )k = k - 1 ;以下描述正确的是A 。A)循环体语句一次也不执行。 B)循环是无限循环。C) while 循环

4、语句执行十次。 D)循环体语句执行一次。(9)以下C程序正确的运行结果是 A 。main ()long y = 23456;printf ( " y = % 3x n ", y);printf ( " y = % 8x n ", y);printf ( " y = % # 8x n ", y);A) y = 5ba0B) y = 5ba0C ) y = 5ba0 D) y =5ba0y = 5ba0 y = 5ba0y = bba0y =5ba0y = 0x5ba0y = 0x5ba0y = 0x5ba0y=#5ba0(10)当a =

5、 1 , b = 3 , c =5 d=4时,则执行完下面一段程序后,x的值是C 。if ( a < b )elseif ( a < c )if ( b < d ) x = 2 ;else x = 3 ;else x = 6 ;else x = 7 ;A) 1 B) 3 C) 2 D) 6(11)下面程序的运行结果是 D 0# include ""main () int a = 1 , b = 10do b - = a ; a + + ; while ( b - - < 0 );printf ( " a = % d ,b = % d n )

6、, a , b );b = 11B) a = 4 ,b = -1D) a = 2 ,(12 )以下 for循环的执行次数是for ( x = 0, y = 0; (y = 123 ) && ( x<4 ); x + + );A)无限次。B) 4 次。C) 0次(13)以下是死循环的程序段的是A)for (i = 1 ; ;)B) i if ( + + i % 2 = = 0 )continue ;< 0 ) break ; while ( + + i )b = 9b = 8D) 3次32767do if ( iif ( + + i % 3 = = 0 )break

7、;C) for ( i = 1 ; )D) i = 1if ( + + i < 10) continue ;while ( i -);(14)若有说明:int a10; 则对a数组元素的正确引用是 8。A) a 10 B) a10 - 10C) a ( 5 )D) a 口(15)根据定义和数据的输入方式,输入语句的正确形式为 A。已有 定义:float f1,数据输 入方 式:(16)已知ch是字符型变量,下面正确的赋值语句是A) ch = '123' =" "B) ch=' 08 'C) ch =' xff 'A) s

8、canf ("%f%f ",&f1,&f2); ”,&f1,&f2);C) scanf ("%3.2f %2.1f ",&f1,&f2); ",&f1,&f2);(17)以下if语句语法正确的是A) if (x>0)x=x+y; printf ("%f ", x); ("%f",-x);else printf ("%f ", -x);C) if (x>0)x=x+y ; printf ("%f &qu

9、ot;, x);("%f", x)else printf ("%f",-x)-x);B) scanf ("%f ,%fD) scanf ("%2.1f %3.2fC。D) chA 。B) if (x>0) printf ( "%f ",-x )else printfD) if(x>0)x=x+y ; peintf;else printf ("%f",(18) 若 W=1, X=2, Y=3, Z=4 则条件式:W < X W : Y < Z Y : Z 的值是AA 1 B

10、 ) 3 C ) 4D) 2(19) 以下程序段 B 。x = -1;do x = x*x ; while (! x);A)是死循环B)循环执行一次C)循环执行二次D)有语法错误(20)逻辑运算符两侧运算对象的数据类型A)只能是0或1B)可以是任何类型的数据C)只能是整型或字符型数据D)只能是0或非0正数(21)下面程序中有错误的行是(前面数字表示行号)1、main ()5、scanf ( "% d ",& a );2、=a0 + ai,6、for=1 ; i < 3; i + + ) a03、int n ", a0);a3 = 1;7、printf

11、 ( " a0 = % d 4、int8、A) 3B)6C)D)7(22)下面的程序段for ( t = 1 ; t < = 100, t + + )scanf ("%d", &x);if ( x <0 ) continue;printf ("%3d", t );A)当x < 0 时整个循环结束B)当x >= 0 时什么也不输C) printf 函数永远也不执行D)最多允许输出100个非负整数(23)以下对一维整型数组a的正确说明是int a (10)B) int n = 10; an ;C)int n;D) #

12、 defineSIZE 10scanf ("%d", &n);inta SIZE;int a n;(24)下面程序的运行结果是a=1; b=2; c=2;while (a<b<c) t = a ; a = b ; b = t ; c - - ;C) 1,2, 1D) 2, 1,printf ("%d , %d, %d", a, b, c);A) 1,2, 0B) 2, 1,01(25)若有说明:int a34; 则对数组元素的非法引用是 B0A) a02*1B) a04C) a4-20D)a13(26) 对以下说明的正确理解是 B。i

13、nt a10 = 6, 7, 8, 9, 10A)将5个初值依此赋给a 1 至a5B)将5个初值依此赋给a 0 至a 4C)将5个初值依此赋给a 6 至a10D)因长度与初值个数不同,故语句错误前的元素个数为(27)若二维数组a有m列,则在a i j A) i * m + jB) j * m + i C) i*m + j -1D) i *m + j + 1(28)以下程序段运行的结果是 D。char c5 = ' a ', ' b ', ' ' 0 ', ' c ', ' ' 0 ' ;printf

14、 ( " % s ", c );A) a ' ' b 'B) ab cC) abcD) ab(29) 以下正确的函数定义形式是 A。A) double fun ( int x , int y )B) double fun ( intx ; int y )C) double fun ( int x , int y ) ; D) double fun ( int x , int y );(30) 以下不正确 的说法是 D。A)实参可以是常量、变量或表达式。B)形参应与其对应的实参类型一致。C)实参 可以为任 意类 型。D)形参可以是常量、变量 或表达式。

15、(31)有两个字符数组a, b,则以下正确的输入格式是 C。A) scanf ("% s % s", &a, &b )B) gets (a, b)C) scanf ("% s % s", a, b )D) gets ("a"); gets("b")(32) 以下程序正确的运行结 果是C。main ()printf ( " % 4 d " , f(a);int a = 2 , i ;for ( i = 0 ; i < 3 ; i + + )f( int a) int b =

16、0 ; static intc = 3 ;b + + ; c + + ;C) 7 89return ( a + b + c ) ; A) 777B) 7 1013D) 7 911(33) # define能做简单的替代,用宏替代计算多 项式4*x*x + 3*x +2之值的函数f, 正确的宏定义是 C oA) # define 4*x*x + 3*x + 2C) # define (4*a*a + 3*a + 2)f(x)f(a) f(a)4*x*x + 3*x + 2(4*a*a + 3*a + 2)B) # define fD) # define(34)当运行以下程序时,从键盘输入:ab

17、<CR>c <CR> def <CR>(<CR>表示回车)则下面程序的运行结 果是# include# define N 6main ()char c (N);int i= 0;for ( ;i < N; ci = getchar ( ),i+);for (i = 0; i < N; i+)putchar(ci);A) abcdefB) aC) bD)abcdddef(35)请读程序:# define AD(x) x + xmain ()intm = 1, n = 2 , k = 3 ;intsum = AD( m + n )*k ;

18、printf ( " sum = % d ", sum ); 上面程序的运行结果是 B。A) sum = 9B) sum = 10C) sum = 12D) sum = 18(36) 对下面程序段正确的判断是:C# define A 3# define B(a) ( A + 1 )*a )x = 3*( A + B( 7 );A)程序错误,不许嵌套宏定义。B) x = 21C) x = 93D)程序错误,宏定义不许有参数(37)执行以下程序后,a , b的值为main ()int a , b , k = 4, m = 6, *p1 = &k , *p2 = &

19、;m;a = p1 = = &m;b = ( -*p1) / (*p2) + 7;A)5(38)-1printf (" a = % dn ", a );printf (" b = % dn ", b );B) 07以下程序中调用 scanf 函数给变量C) 16 a 输入数值的方法是错误的,因为D)10main ( )int *p , *q , a , b ;p = &a ;printf ( " input a : " );scanf ( " %d ",*p) ;A)*p 表示的是变量a 的值,而不

20、是变量a 的地址。B)*p 表示的是指针变量p 的地址。C)*p 表示的是指针变量p 的值。D)*p 只能用来说明 p 是一个指针变量。(39) 以下程序的运行结果是。# define MIN (x, y) (x) < (y)(x) : (y)main ( )int i = 10, j = 15, k;k = 10 * MIN (i, j); printf ( " % d n ", k );A) 15B) 10(40) 以下正确的函数形式是B ) double fun (int x, int y) z = x +y; return z ;C) fun (x, y)C)

21、 100D) 150B) fun ( int x, y) int z; return z; D) double fun (int x, int y)int x, y; double z;(41) 以下不正确的说法是 double z ; z = x + y; return z;A )在不同函数中可以使用相同名字的变量。B )形式参数是局部变量。C) 在函数内的复合语句中定义的变量在本函数范围内有效。 D) 在函数内定义的变量只在本函数范围内有效。(42 ) C 语言提供的预处理功能包括条件编译,其基本形式为:# X X X 标识符程序段1# else程序段2# endif这里 X X X 可以

22、是A) define 或 include.C) ifdef 或 ifndef 或 define(43) 以下程序的正确运行结果是B) ifdef 或 ifndef 或 ifD) ifdef 或 include。# include ""main ( )int k = 4, m = 1, p ;p = func ( k, m); printf ("% d ,", p);p = func ( k, m); printf ("% dn", p);func (int a , int b)static int m = 0 , i = 2;i+ =

23、 m+1;m = i + a +b; return (m) ;A) 8, 16B) 8, 17C) 8, 20D) 8, 8(44)已有定义 int k = 2; int *p1, *p2,且pl和p2均已指向变量k,下面不能正确执行 的赋值语句是。A) k = *p1 + *p2 ;B) p1 = p2;C)p2 = k ;D) k = *p1*(*p2) ;(45) 若有说明 int *p, m = 5, n; 以下正确的程序段是。A)p = &n;B)p = &n;Scanf (" % d ", &p);Scanf (" % d &q

24、uot;, *p);C) Scanf (" % d ", &n)D) p = &n;*p = n;*p = m;(46) 以下 scanf 函数调用语句中 , 对结构体成员的不正确引用为 。struct pupilchar name20 ;int age ;int sex ; pup5 , *p ;p = pup ;A) scanf ( " % s " , pup0 . name);B) scanf ( " % d " , &pup0 . age);C) scanf ( " % d " ,

25、p ->sex);D) scanf ( " % d " , &(p -> age);(47)若有定义:int a34;则对a数组白第i行第j列(假设i, j已正确说明并赋值)元素值的正确引用为 。A) * ( * ( a + i) + j)B) ( a + j) j C) * ( a + i + j)D) *(a +i ) +j(48) 若已定义 char S10 ;则在下面表达式中不表示S1 的地址的是。A) S + 1B) & S 1C) & S 0 + 1D) S + +(49) 若有定义 : int a23 则对 a 数值的第 i

26、 行,第 j 列元素地址的正确引用 为。A) *( a i + j ) B)a i + j C) *( a + j )D) (a + i )(50) 若有以下定义,且0 < = i < 6 ,则正确的赋值语句是。int s46 , t 64 ,(*p)6 ;A) p = t ;B) p = s i ;C) p = s ;D)p = t i ;(51) 以下程序的运行结果是。# includemain ( )union long a ; int b ; char c ; m ;printf ( " %d n ", sizeof (m) ; A) 4B) 2C) 6

27、D)8(52) 当顺利执行了文件,关闭操作时, fclose 函数的返回值是。A) 0B) TURNC) -1D) 1(53) 已知学生记录描述为struct student int no;char name 20;char sex;struct int year;int month;int day; birth; s;设变量 s 中的“生日”应是“ 1984 年 6是。A) year = 1984;month = 6;day = 6;C) s. year = 1984;s. month = 6;s. day = 6 ;(54) 表达式 a < b | c& d 的运算顺序是A)

28、 , & , < , |C) , & , | , <(55) 设有以下语句:char x = 3 , y = 6 , z ;z = x A y < < 2 ;则 z 的二进制值是.A) 00010100B)D) 00011011月 6 日” ,下列对“生日”的正确赋值方式B) birth. year = 1984;birth. month = 6;birth. day = 6;D) s. birth. year = 1984;s. birth. month = 6;s. birth. day = 6 ;.;B) , < , & , |D)

29、, | , & , <00011000C) 00011100(56) 已知函数的调用形式: fread ( buffer , size , count , fp ), 其中 buffer 代表的是。A) 一个整型变量, 代表要读入的数据项总数.B) 一个文件指针 , 指向要读的文件.C) 一个存储器 , 存放要读的数据项.D) 一个指针 , 指向要读入数据的存放地址(57)若有函数 max (a, b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是B) *p max (a, b);A) (*p) max (a, b);C) *p (a, b)D) (*p

30、) (a, b)(58) 在 16 位 IBM-PC 机上使用 C 语言,若有如下定义: union dataint i;char ch ;double f ; b ;则其共用体变量b 占用内存字节数是A) 1B) 2C) 8(59) 若有以下程序段int x = 1, y = 2;x = x A y ;y = y a x ;x = x A y;则执行以上语句后 x 和 y 的值分别是A) x = 1B) x = 2y = 2y = 1(60) 若要用 fopen 函数打开一个新的二进制文件,串应是。oD) 4C) x = 2y = 2该文件要既能读也能写,D) x = 1 y =则文件方式字

31、符A) "w+"B) " ab + "C) " wb+ "D) " ab "二.填空(每空2 分,共 40 分) :请在 处添上正确答案。(1) 条件 " 2 < x < 3 或 x < -10 " 的 C 语言表达式是 1 .(2) 以下程序的功能是判断输入的年份是不是闰年, 请在 内添入正确的内容main ( ) int y , f ;scanf ( "% d ", &y ) ;if ( y % 400 = = 0 ) f = 1;else if

32、 (2) f = 1 ;else 3 ;if (f ) printf ( " % dis ", y );else printf ( " % dis not " , y) ;Printf (" a leap year n ") ;(3) 以下程序是用梯形法求sin( x ) * cos( x ) 的定积分,求定积分的公式为:其中 xi = a + ih , h = (b - a )/n设 a = 0, b = 为积分上下限,积分区间分割数n = 100 ,# include < stdio . h ># include &l

33、t; math. h >main ( ) int i , n; double h, s, a, b ; printf (" input a, b :");scanf ( "% lf % lf ", 4);n = 100; h = 5S = * ( sin( a ) * cos( a ) + sin( b ) * cos( b ) ); for ( i = 1; i <= n - 1; i + +) S+ = 6;S* = h;Printf (" S = % lfn ",S);(4) 下面程序的运行结果是7)# includ

34、e " "main ( )int i =1;while ( i < =15)if ( + + i % 3! = 2 ) continue ;else printf ( " % d " , i ) ;printf ( " n ") ;(5) 下面程序段运行的结果是8 。i = 1; s = 3;do s+ = i + + ;if (s % 7 = = 0) continue;else + + i; while (s < 15);printf ( " % d ", i );以下程序是矩阵a, b 的乘积:m

35、ain ( ) int a32 = 2 , -1 , -4 , 0 , 3 , 1 ;int b22 = 7 , -9 , -8 , 10 int i , j , k , s , c32 ;for( i = 0 ;i<3;i + + )for( j = 0 ;j<2;j + + ) for(9 ;k<2;k + + )s + = 10 ;cij = s ;for ( i = 0 ; i < 3 ; i + + ) for for ( j = 0 ;printf ( % 6d ", cij ) ;11 (6) 设数组 a 包括 10 个整型元素。下面程序的功能是

36、求出 a 中各相邻两个元素的和,并 将这些和存放在数组 b 中,按每行三个元素的形式输出。main ( ) int a10,b10 ,i ;for ( i = 0;i < 10;i + +)scanf (" % d ", &ai);for (12; i < 10; i + +)13for ( i = 1; i < 10; i + +)printf ( " % 3d ", bi);if ( 14 = 0 ) printf ( " n " ); (7) 以下程序的功能是根据公式求 e 的近似值,精度要求为10-6

37、 请填空.# include < >main ( )int i ; double e , new ;15 new =for ( i = 1; 16 i + + )new / = (double ) i ; e+ = new ; printf ( " e = % f n ", e );( 8 ) 下面 add 函数的功能是求两个参数的和, 并将和值返回调用函数中, 错误的部分是17 改正后为 18Void add (float a , float b )float c ;c = a + b ;return c ;( 9 )下面程序以每行4 个数据的形式输出 a 数组# define N 20main ( ) int aN, i;for ( i = 0; i < N; i + +) scanf (" % d ",19);for ( i = 0; i < N; i + +) if ( 20 )21printf ( " % 3d ", ai); printf ( " n " );(10) 以下程序是 Y4X1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论