《C语言复习题(27页).doc》由会员分享,可在线阅读,更多相关《C语言复习题(27页).doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-一、选择题1、 以下程序段的输出结果是: ( )int x=17,y=3,z; printf(“%dn”,z=(x=x/y,x%y);A) 3 B) 0 C) 2 D) 12、 以下if语句语法正确的是: ( ) A) if(x0) B)if(x0) printf(%f,x) x=x+y;printf(%f,x);else printf(%f,-x); else printf(%f,-x);C) if(x0) D) if(x0) x=x+y;printf(%f,x); x=x+y;printf(%f,x)else printf(%f,-x); else printf(%f,-x);3、 下面
2、程序段的运行结果是: ( )int a=1,b=2,c=2,t;while(abc) t=a;a=b;b=t;c-; printf(%d,%d,%dn,a,b,c);A) 1,2,0 B) 2,1,0 C) 1,2,1 D) 2,1,14、若m为整型变量,则以下循环执行次数是: ( )for(m=2;m=0;) printf(%d,m-);A) 无限次 B) 0次 C) 1次 D) 2次5、在C语言中,以下正确的说法是: ( )A)实际参数与其对应的形式参数各占用独立的存储单元B)实际参数与其对应的形式参数占用同一个存储单元C)只有当实际参数和与其对应的形式参数同名时才占用同一个存储单元D)形
3、式参数是虚设的,不占用存储单元6、以下程序的输出结果为 ( )main()int i,k,a10,p3; k=5; for(i=0;i10;i+) ai=i; for(i=0;i3;i+) pi= ai*( i +1); for(i=0;i3;i+) k+=pi*2; printf(“%dn”,k); A) 20 B) 21 C) 22 D)237、以下程序的输出结果为: ( )char str=abn012; printf(%d,strlen(str);A) 3 B) 4 C) 6 D) 128、以下程序的输出结果是: ( )main()int n33=1,2,3,4,5,6,i,j,s=0
4、; for(i=1;i3;i+) for(j=0;j=i;j+) s+=aij; printf(%dn,s);A) 18 B) 19 C) 20 D)219、设有以下宏定义: ( )#define N 3#define Y(n) (N+1)*n)则执行语句:z=2*(N+Y(5+1);后,z的值为:A)出错 B)42 C)48 D)5410、下列程序执行后输出的结果为: ( )f(int a) static int b,c=3; a=b; b=+c; return(a);main()int a=2,j,k; for(j=0;j2;j+) k=f(a); printf(“%dn”,k); A)
5、4 B) 0 C) 6 D) 511、下列程序语句的输出是: ( ) int n=0;while(n+=2); printf(%d,n);(A)2 (B)3 (C)4 (D)有语法错误12、 下列程序语句的输出是: ( ) int a=011; printf(%dn,+a);(A) 12 (B) 11 (C) 10 (D) 913、 执行语句for(i=1;i+4;);后,变量i的值是: ( )(A)3 (B)4 (C)5 (D)不确定14、 定义int x=0,y=8,z=9后,则下面表达式的值为0的是: ( )(A) x&y (B) x=y (C)x|y+z&y-z (D)!(xy)&!z
6、|1)15、 对下述程序段描述正确的是: ( ) int k=0; while(k=1) k+;A) 有语法错误,不能执行 B) 循环是无限的C) 循环体语句一次也不能执行 D) 循环体语句执行一次16、下述程序的运行结果是: ( )#includestdio.hmain() int i; for(i=1;i=5;i+) if(i%2) printf(*); else continue; printf(#); printf($n);(A)*#*#*#$ (B)#*#*#*$ (C)*#*#$ (D)#*#*$17、下述程序的输出结果是: ( )#includestdio.hint x;void
7、 fun();void main()int x=1; if(x=1) int x=2; printf(%d,x+); extern int x; printf(%d,+x); fun();void fun() printf(%d,x+);A)2,1,1 B) 1,2,1 C) 2,2,2 D) 2,2,118、下面对宏定义的描述,不正确的是: ( )A)宏不存在类型问题,宏名无类型,它的参数也无类型B)宏替换不占用运行时间C)宏替换是先求出实参表达式的值,然后代入形参运算求值D)其实,宏替换只不过是字符替代而已19、以下程序的输出结果是: ( )#include int func(int a,
8、int b);void main() int k=4,m=1,p; p=func(k,m); printf(%d,p); p=func(k,m); printf(%d,p); int func(int a,int b) static int m=0,i=2; i+=m+1; m=i+a+b; return(m); A)8,17 B)8,16 C)8,20 D) 8,820、若有说明:int a 3=1,2,3,4,5,6,7;则a数组第一维的大小是: ( )(A)2 (B)3 (C)4 (D)无确定值19、 下列程序段执行后,s的值为: ( )char ch=”600”; int a,s=0;
9、 for(a=0;cha=0&cha3;j-) if(j%3) j-; -j;-j; printf(“%d ”,j);a) 6 3 b) 7 4 c) 6 2 d) 7 324、下列程序段的输出结果为 ( )int x=3;doprintf(“%3d”,x-=2); while(!(-x);a) 1 b) 3 0 c) 1 -2 d) 死循环25、 设变量已正确定义并赋值,则符合C语言语法的表达式是:( )(A)a=a+5; (B)a=b=c+ (C)int(34.5%5) (D)a=a+8=b-c 26、下列程序段的运行结果是: ( )int n=0; while(n+=2); printf
10、(%d,n);(A)2 (B)3 (C)4 (D)有语法错误27、若有说明:int a34;则对a数组元素的正确引用是:( )(A) a24 (B) a1,3 (C)a1+10 (D)a(2)(1)45、 针对以下程序段,说法正确的是 ( )int a=5,b=0,c=0; if(a=b+c) printf(* * *); else printf(& & &);(A)有语法错误不能通过编译 (B)可以通过编译但不能通过连接(C)输出 * * * (D)输出& & &28、 执行下面的程序段后,a的值为 ( )int a,b;for(a=1,b=4;a=23) break; if(b%3=1)
11、b+=3;continue; b-=5; (A)7 (B)8 (C) 9 (D)1029、以下描述中错误的是 ( )(A)函数调用可以出现在执行语句中 (B)函数调用可以出现在表达式中(C)函数调用可以作为函数的实际参数(D)函数调用可以作为函数的形式参数30、以下程序的输出结果是 ( )#define ADD(x) x+xmain()int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(sum=%d,sum); (A)sum=9 (B)sum=10 (C)sum=12 (D)sum=1831、以下程序的输出结果是 ( )void fun(int a,int
12、b,int c)a=456;b=567;c=678;main()int x=10,y=20,z=30; fun(x,y,z); printf(“%d,%d,%d”,z,y,x);(A) 30,20,10 (B)10,20,30 (C)456,567,678 (D)678,567,45632、下面程序应能对两个整型变量的值进行交换。以下说法正确的是( )main() int a=10,b=20; printf(1)a=%d,b=%dn,a,b); swap(&a,&b); printf(2)a=%d,b=%dn,a,b;swap(int p,int q) int t; t=p;p=q;q=t;(
13、A)该程序完全正确(B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可(C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针变量即可(D)以上说法都不正确33. 执行下面的程序段后,a的值为: int a,b;for(a=1,b=1;a=20) break; if(b%3=1) b+=3;continue; b-=5; A. 7 B. 8 C. 9 D. 1034. 该程序的输出结果是多少? #include main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue;
14、x+; printf(x=%dn,x); A. x=4 B. x=8 C. x=6 D. x=1235. 下面这个程序的输出是什么? #include main() int y=10; while(y-); printf(y=%dn,y); A. y=0 B. while构成死循环 C. y=1 D. y=-136 C语言可执行程序从什么地方开始执行? A. 程序中第一条可执行语句 B. 程序中第一个函数 C. 程序中的main函数 D. 包含文件中的第一个函数37. 以下对C语言函数的有关描述中,正确的是: A. 在C中,调用函数时,只能把实参的值传给形参,形参的值不能传给实参B. C函数既
15、可以嵌套定义又可以递归调用C. 函数必须有返回值,否则不能使用函数D. C程序中有调用关系的所有函数必须放在同一个源程序文件中38. 以下叙述中不正确的是: A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值B. 在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容C. 在C中,全局变量的隐含类别是自动存储类别D. 在C中,函数形参可以说明为register变量39、 表示关系x=y=z的c语言表达式为: ( )a) (x=y)&(y=z) b) (x=y)AND(y=z) c) (x=y=z) d) (x=y)&(y=z)40、 假定a和b为int型变量,则执行以下语句后b
16、的值为: ( )a=2;b=8; dob-=a;a+;while(b-0|a0 B. a C. !a=0 D. !a15. 若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算? A. f=(f*100+0.5)/100.0 B. i=f*100+0.5,f=i/100.0; C. f=(int)(f*100+0.5)/100.0; D. f=(f/100+0.5)*100.0;16. 请选择您认为正确的说法。 A.在C语言中,函数可以嵌套定义。 B.程序中的注释部分可有可无,通常可以省略。 C.在函数中,只能
17、有一条return语句。 D.C程序中,编译程序会检查数组下标是否越界。 E.在C程序中,ABC和abc是两个不同的变量。 F.在C语言中,函数中的变量可以赋初值,每调用一次该函数,就赋一次初值。 G.C语言中不能对数组名进行加减和赋值运算。17. 下面各语句行中,不能正确进行赋字符串操作的语句行是 A. char s10; scanf(%s,&s); B. char st45=ABCDE;C. char s5=A,B,C,D,E; D. char s50; s=ABCDE;18. 不合法的数组定义是 A. int a =string; B. int a5=0,1,2,3,4,5;C. vhs
18、t s=string; D. char a =0,1,2,3,4,5;19. 指出下面哪些是保留字: A. char B. abc C. printf D. Int E. float F. define G. include H. PI 20. 指出下面哪些是合法的用户定义的标识符? A. P-S B. putchar C. double D._908 E. *par F. sheep! G.wind H. x y21. C语言的基本类型哪些: A. 整型 B. 枚举型 C. 数组型 D. 指针型 E. 字符型 F. 构造型 G. 实形 H. 空类型22. 这段程序中的常量有: #define
19、 PI 3.14 void main() int sum; sum = 10 + 15; printf(sum=%dn,sum); printf(result is 25n); 这段程序中常量有: A. 10 B. sum C. 15 D. 25 E. main F. PI23.C语言的主要特点有哪些? A.简洁、紧凑,使用方便、灵活,易于学习和应用。 B.语言是面向结构化程序设计的语言。 C.语言允许直接对位、字节和地址进行操作。 D.数据类型丰富。 E.语言生成的目标代码质量高。24、以下说法正确的有: A输入项可以为一个实型常量,如scanf(%f,3.5); B只有格式控制,没有输入项
20、,就不能进行正确输入,如scanf(a=%d,b=%d); C当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%4.2f,&f); D当输入数据时,必须指明变量的地址,如scanf(%f,&f);25、 以下叙述中正确的有 ( )(A)预处理命令行都必须以#号开始(B)在程序中凡是以#号开始的语句行都是预处理命令行(C)C程序在执行过程中对预处理命令行进行处理(D)以下是正确的宏定义 #define IBM_PC pc#326、以下正确的叙述有 ( ) (A)C语言的预处理功能仅仅是指完成宏替换和包含文件的调用 (B)预处理命令只能位于C源程序文件的首部 (C)一条预处理
21、命令必须单独占一行 (D)C程序中,编译预处理是在编译开始之前进行的三、填空题1、 设a=3,b=4,c=5,则逻辑表达式a|b+c&b-c的值是: 1 。2、 语句printf(%5.3fn,123456.12345);的输出为_123456.123_ _。3、 下面程序段的运行结果是: 11 。 int i=0,sum=1; do sum+=i+; while(i(y)?(x):(y)main()int a=5,b=2,c=3,d=3,t1,t2; t1=MAX(a+b,c+d)*10; t2=MAX(c+d,a+b)*10; printf(t1=%d,t2=%d,t1,t2); 6、 要
22、使以下程序段输出3个整数,请填入一个整数:for(j=1;j= 7(7-14都可以) ;printf(“%dn”,j+=j+);7、 下面程序段是找出整数的所有因子(包括1和整数本身),请填空: scanf(%d,&x); i=1;for(; i=x ;) if(x%i=0) printf(%3d,i); i+8、函数fun的功能是:使一个字符串按逆序存放,请填空 void fun(char str)char m; int i,j;for(i=0,j=strlen(str);i j-1 ;i+,j-) m=stri; stri= strj-1 ; strj-1=m; printf(%sn, s
23、tr ); 9、 设x和y均为int型变量,且x=1,y=2;则表达式1.0+x/y的值为 1.0 。10、 设i,j,k均为int型变量,则执行完下列for循环:for(i=0,j=10;i=j;i+,j-) k=i+j; 之后,k的值为 10 。11、 若输入字符串:abcde,则以下while循环体将执行 0 次。 while(ch=getchar()=e) printf(*); 12、 下面程序段统计从键盘输入的字符中数字字符的个数,换行符结束,请填空 int n=0; char c; c=getchar();while(c!=n) if( c=0&c=9 ) n+; c=getcha
24、r(); 13、 若定义:int a34=1,2,0,4,6,8,10;则初始化后,a12得到的值是: 0 ;a21得到的值是: 6 。14、若x为int型变量,则执行以下语句x=7;x+=x-=x+x;后x的值是: -14 。15、Turbo C环境中,用RUN菜单中的RUN命令运行C程序的快捷键是 Ctrl+F9 。16、若有定义:int a =2,4,6,8,10,12,*p=a;则*(p+1)的值是 4 ,*(a+5)的值是 12 。17、 若已知a=7,b=3,c=0,则表达式a+b|c的运算结果是 1 。18、 条件“2x3或者x-10”的C语言表达式是: 2&X3| x-10 。
25、19、 若变量a、b为int型,以下语句可以不借助任何变量把a、b的值交换,请填空:a+= b ;b=a- b ;a-= b ;20、以下程序的输出结果是 12 。 int a10,i,k=0;for(i=0;i10;i+) ai=i;for(i=0;i4;i+) k+=ai+i;printf(%dn,k);21、以下程序中for语句的循环体被执行的次数为: 6 。 #define N 2#define M N+2#define NUM 2*M+1main()int i; for(i=1;iNUM;i+) printf(%dn,i); 22、下面程序段是找出整数的所有因子(包括1和整数本身),
26、请填空: scanf(%d,&x); i=1;for(; (15) ;) if(x%i=0) printf(%3d,i); i+23、下述程序的功能是查找数组中元素的最大值输出,请填空完成。#define A 10main( ) int aA; int max,i; #if A=10 for(i=0;iA;i+) ai=10+i; #else for(i=0; iA ;i+) scanf(%d,&ai); #endif max= a0 ; for(i=1;iA;i+) if( maxai ) max=ai; printf(Max=%dn,max);24、下面程序将二维数组a的行和列元素互换后存到另一个二维数组 b 中。#include main() int a23=1,2,3,4,5,6; int b32,i,j; prntf(arrary a:n); for(i=0; i=1; i+) for(j=0; J=2 ; j+) printf(%5d, aij);