C语言期末复习题附答案复习过程.docx
C语言期末复习题附答案复习过程C语言期末复习题附答案1、凡是函数中未指定存储类型的局部变量,其隐含的存储类型为 A )。A、 autoB、staticC、 externD、register2、若有定义:int *ptr;则标识符ptr( B )oA、是一个指向整形变量的指针B、是一个指针数组名C、是一个指针,它指向一个含有四个整形元素的一维数组D、说明不合法3、结构化程序设计的基本结构主要是(D )A、分支结构、平行结构、循环结构B、分支结构、函数结构、循环结构C、平行结构、选择结构、函数结构D、顺序结构、选择结构、循环结构4、一个C程序中,主函数的个数是(B )。A、2个B、1个C、任意个D、10 个5、在 Visual C+ +6、0环境下,C源程序文件名的默认后缀是(A )。A、 、 cppB、 、 exeC、objA、scanf("%f%f"/&x/&y);B、scanf("%d%d,1,&x/&y);C、scanf(n%lf%lf",&x,&y);D、scanf("%lf%lfM/x/y);44、在C语言中,下面哪个标识符是合法的(B )A、ifB、dayC、#25D、a345、x为int型变量,且x=65,不正确的输出函数调用是(D )A、printf( d" ,x);B、printf( 3d,x);C、printf( "%c" ,x); D、printf( "%s" ,x);46、以下能正确定义且赋初值的语句是(B )A、int nl=n2=10;B、char c=32;C、float f=f+lx 1D、double x=12x 3E2、547、下列程序段的执行结果为(C )。#includemain()int x=3;do printf("%3dn x-=2);while(!(x);)A、1B、3 0C、1-2D、死循环48、C语言对嵌入if语句的规定是:else总是与(D )配对A、其之前最近的ifB、第一个ifC、缩进位置相同的ifD、其之前最近且不带else的if49、调用函数时,基本类型变量作函数实参,它和对应的形参A )。A、各自占用独立的存储单元B、共用一个存储单元C、同名时才能共用在存储单元D、不占用存储单元50、以下程序:#includevoid main()(int p,a = 5;if(p=a!=O)printf( dn,p);elseprintf( drT ,p+2);程序输出结果是(B )A、0B、1C、2D、551、若有说明:int s4;则对a数组元素的非法引用是(D )A、s02*lB、 sl3C、s4-20D、s0552、若有说明语句int (*ptr)();其含义是(C )eA、ptr是一个指向一维数组的指针变量B、ptr是指针变量,指向一个整形变量C、一个指向函数的指针,该函数的返回值是一个整数 D、以上都不对53、当执行以下程序时,(C )#includevoid main()(int a;while(a = 5) printf("%d )A、循环体将执行5次B、循环体将执行0次C、循环体将执行无限次D、系统会死机54、以下正确的函数定义形式是(A )A、int fun(int xjnt y)B、int fun(intx;int y)C、int fun(int x,y)D、int fun(int x,y;)55、在一个源文件中定义的全局变量的作用域为(D ) A、本文件的全部范围B、本程序的全部范围C、本函数的全部范围D、从定义该变量的位置开始至本文件结束为止 56、以下程序运行的结果是(B )#include#define MIN(x,y) (x)<(y)?(x):(y)void main()int i=10J = 15,k;k=10*MIN(ij);printf( dn,k);)A、10B、15C、100D、15057、字符串 I am a student. /z在存储单元中占(C )字节A、3B、4C、16D、1758、若定义一个结构体变量,则系统分配给它的内存是(A )。A、各成员所需内存量的总和B、结构中第一个成员所需内存量C、成员中占内存量最大者所需的容量D、结构中最后一个成员所需内存量59、以下对二维数组a的正确说明是(C )。A. intc5;B、float c(5,4);C、double cl4;D、float c(5)(4);60、设有intxzy;以下语句判断x和y是否相等,正确的说法是该 语句(B )if (x=y) printf(n x is equal to y、");A、语法错B、不能判断x和y是否相等C、编译出错D、能判断x和y是否相等61、以下对C语言中共用体类型数据的叙述正确的是(C )。A、可以对共用体变量名直接赋值B、一个共用体变量中可以同时存放其所有成员C、一个共用体变量中不可能同时存放其所有成员D、共用体类型定义中不能出现结构体类型的成员62、调用函数时,基本类型变量作函数实参,它和对应的形参 (A)A、各自占用独立的存储单元B、共占用一个存储单元C、同名时才能共用存储单元D、不占用存储单元63、要求函数的功能是交换x和y中的值,且通过正确调用返回 交换结果。能正确实现此功能的函数是(A)。A、funa(int *x,int *y)B、funb(intxjnt y)intp; int t;p=*x;*x=*y;*y=p; t=x;x=y;y=t;C、func(int *xjnt *y)D、fund(intxjnt y)*x=*y;*y=*x; *x=*x+*y; *y=*x-*y; *x=*x-*y;64、如果在一个函数中的复合语句中定义了一个变量,则该变量 (A )A、只在该复合语句中有效B、在该函数中有效C、在本程序范围内有效D、为非法变量65、在一个源文件中定义的全局变量的作用域为(D )。A、本文件的全部范围B、本程序的全部范围C、本函数的全部范围D、从定义该变量的位置开始至本文件结束为止66、在以下关于带参数宏定义的描述中,正确的说法是(A )。A、宏名和它的参数都无类型B、宏名有类型,它的参数无类型C、宏名无类型,它的参数有类型D、宏名和它的参数都有类型67、设有如下程序段char s20= "Bejing"f*p;p=s;则执行p二s;语句后,以下叙述正确的是(A )。A、可以用*p表示sB、数组s中元素的个数和p所指字符串长度相等C、s和p都是指针变量D、数组s中的内容和指针变量p中的内容相等D、 、 dsp6、根据C语言的语法规则,下列(B )是用户定义的合法标识符A、elseB、ElseC、 user$2D、5_object7、以下叙述中正确的是(C )。A、break语句只能用于switch语句体中B、continue语句的作用是:使程序的执行流程跳出包含它的所 有循环C、break语句只能用在循环体内和switch语句体内D、在循环体内使用break语句和continue语句的作用相同8、若定义int x=136,y;,执行语句y=x/10%10;Jg y的值是(BA、1B、3C、6D、09、下列关于C语言注释的叙述中错误的是(D )。A、以V*”开头并以“*/”结尾的字符串为C语言的注释内容B、注释可出现在程序中的任何I位置,用来向用户提示或解释程序 的意义C、程序编译时,不对注释作任何处理D、程序编译时,需要对注释进行处理10、若有定义:intx,a;则语句x= ( a=3za+l);运行后,x、a的 值依次为(C )。A、3 , 3B、4,4C、4,3D、3,411、以下程序运行结果是(A )voidmain()int x=28;do(printf("%dnfx-);while(!x);)A、28B、27C、26D、012、如果a = l , b=2 , c=3 , d=4 ,则条件表达式 a<b?a:c<d?c:d 的值为< bdsfid = "128" p=""x/b?a:c<d?c:d 的值为 < >(A )eA、1B、2C、3D、413、下列关于C语言注释的叙述中错误的是(D )。A、以"/*“开头并以“*/”结尾的字符串为C语言的注释内容B、注释可出现在程序中的任何位置,用来向用户提示或解释程序 的意义C、程序编译时,不对注释作任何处理D、程序编译时,需要对注释进行处理14、定义如下变量和数组:int k;inta33=LZ345,6,7,8,9;则下面语句的输出结果是(A )for(k=0;k<3;k+) printf( "%6" zak2-k);A、3 57B、3 69C、15 9Ds 14 715、C语言对嵌套if语句的规定是:else总是与(D )酉己对。A、其之前最近的ifB、第一个ifC、缩进位置相同的ifD、其之前最近的且没与其他else配对的if16、有以下程序段intazbzc;a = 10;b=50;c=30;if(a>b)a=b,b=c/c=a;printfC a=%d b=%d c=%dn” ,a,b,c);程序的输出结果是(B)。A、a = 10 b=50c=10B、a = 10 b=50c=30C、a=10 b=30 c=10D、a = 50b=30c=5017、判断字符串a和b是否相等,应当使用(D )As if(a= =b)B、if(a = b)C、if(strcpy(a,b)Ds if(strcmp(a,b)18、以下结果为整数的表达式(设有底版1«用(£)(8)。A、i+fB、i*cC、c+fDs i+c+f19、x、v、z被定义为int型变量,若从键盘给x、v、z输入数据,正确的输入语句是(B )。A、INPUT xx y、z;B、scanf(1,%d%d%d"/&xz&y,&z);C、scanf("%d%d%d"/x/y,z);D、 read(n%d%d%d",&xz&y,&z);20、下列叙述正确的是(B )A、函数的定义允许嵌套,但函数的调用不允许嵌套B、函数的定义不允许嵌套,但函数的调用允许嵌套C、函数的定义和调用都不允许嵌套D、函数的定义和调用都允许嵌套21、当执行以下程序时,(C )。#includevoid main()int a;while(a = 5)printf("%d”,a-);)A、循环体将执行5次B、循环体将执行。次C、死循环D、循环体将执行4次22、若已定义:int *p,a;,以下正确的语句是(D )A、p=*a;B、a = p;C、a=*p;D、p=&a;23、如果在一个函数中的复合语句中定义了一个变量,则该变量 (A )。A、只在该复合语句中有效B、在该函数中有效C、在本程序范围内有效D、为非法变量24、以下叙述中错误的是(B )。A、用户自定义的函数中可以没有return语句B、用户自定义的函数中可以有多个return语句,以便可以调用 一次返回多个函数值C、用户自定义的函数中若没有return语句,则应当定义函数为 void类型D、函数的return语句中可以没有表达式25、若有说明:ints15;则对a数组元素的正确引用是(D )。A、s15B、 s3、 5C、s(5)D、s15-1526、执行 int 知4=2,357,8,9,11,1315;语句后,凯12的值 是(A )A、11B、3C、5D、927、下面是s的初如始化,其中不正确的是(D )。A、chars5= "abc");B、chars5= 'a' , b , 'c' ;C、chars5=D、char s5= "abcdef"28、以下程序运行结果是(B )#define M(x/y,z) x*y*z#includevoidmainQint a = lzb=2,c=3;printf("%dn"/M(a+b/b+c/c+a);)A、60B、15C、20D、程序错误29、在C语言中,只有在使用时才占用内存单元的变量,其存储 类型是(A )。A、auto 和 registerB、extern 和 registerC、auto 和 staticD、static register30、如下表述中,判断字符数组a和b中所存储的字符串是否相 等的选项是(D )。A、a = = bB、a = bC、strcpy(a,b)D、strcmp(azb)31、在以下关于带参数宏定义的描述中,正确的说法是(A )。A、宏名和它的参数都无类型B、宏名有类型,它的参数无类型C、宏名无类型,它的参数有类型D、宏名和它的参数都有类型32、在C语言中,二维数组元素在内存中的存放顺序是(A )A、按行存放B、按列存放C、由用户自己定义D、由编译器决定33、以下不正确的叙述是(C )。A、在C程序中,逗号运算符的优先级最低B、在C程序中,APH和叩h是两个不同的变量C、在C程序中,无论是整数还是实数,都能被准确无误的表示D、在C程序中,是只能用于整数运算的运算符34、下面正确的函数定义形式是(A )。A、double fun(intxjnt y)B、double fun(intx;inty) C、double fun(intxjnt y); D、double fun(intx,y;) 35、在执行char str10="key0word"语句后,strlen(str)的结 果是(A )A、3B、4C、5D、836、下面程序的运行结果是(B )voidmain()(int b5=l/3,5/7/9/*p;p=b;printf( "%d" r*(p+l);)A、1B、3C、5D、737、以下if语句错误的是(A)eAx if(x< = "">Bs if(x)x+=y;C、if(x<y);< bdsfid="291" p=nnx/y);<>D、if(x!=y) scanf("%d",&x); else x+;38、判断char型变量c是否为小写字母的正确表达式为(D )A、 a' <=c<=z z'B、(c>=a)&&(c<=z)C、( H <=c)|( Y >=c)D、c>= a' )&&(c<=' z')39、指向一个变量的指针,其存储的数据是该变量的(B )。A、值B、地址C、名称D、一个标志40、若已定义:int a=3zb=4zc=5 ;,则下面表达式中值为0的是D )A、'a'&&'b'B、a< = bC、a|b+c&&b-cD、!(a<b)&&!c|l)< bdsfid = n308" p=n,x/b)&&!c|l)<> 41、以下对二维数组s进行初始化的语句错误的是(C )。A. ints23=0;B. int s 3=1,23,4,5;C ints23= 1,2, 3,4, 5,6;D. ints3=l12,0;42、若有说明语句int (*ptr)();其含义是(C )。A、ptr是一个指向一维数组的指针变量B、ptr是指针变量,指向一个整形变量C、一个指向函数的指针,该函数的返回值是一个整数D、以上都不对43、若x、y均为double型变量,正确的输入函数调用是(B )