《C语言习题集(共36页).doc》由会员分享,可在线阅读,更多相关《C语言习题集(共36页).doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上一、单选题:(1) 在C语言提供的合法的关键字是( ) A)swicth B) cher C)Case D)default (2)在C语言中,合法的字符常量是( )A)084 B) x43 C)ab D) 0(3)若有定义和语句: char s10: s=abcd; printf(%sn,s); 则结果是(以下u代表空格)( ) A)输出abcd B)输出a C)输出abcduuuuu D)编译不通过 (4) 若有定义和语句: int *pp, *p, a=10, b=20; pp=&p; p=&a; p=&b; printf(%d,%dn,*p,*pp); 则输出结
2、果是:( ) A)10, 20 B)10,10 C)20,10 D)20,20 (5)若有以下定义和语句: int u=010, v=0x10,w=10; printf(%d,%d,%dn, u, v, w); 则输出结果是( ) A) 8,16,10 B) 10,10,10 C)8, 8,10 D) 8,10,10 (6) 若有以下定义和语句 char c1= b, c2=e; printf(%d,%cn, c2-c1,c2-a+A); 则输出结果是( ) A)2,M B)3,E C)2,E ? D)输出项与对应的格式控制不一致,输出结果不确定(7) 若有以下定义: char s20=pro
3、gramming,*ps=s; 则不能代表字符o的表达式是( ) A) ps+2 B) s2 C) ps2 D) ps+=2,*ps(8) 若i, j已定义为int类型,则以下程序段中内循环体的总的执行次数是( ) for (i=5; i; i-) for(j=0; j4; j+) . A) 20 B) 25 C) 24 D) 30(9)若有以下定义和语句: char *s1=12345,*s2=1234; printf(%dn,strlen(strcpy(s1,s2);则输出结果是( )A) 4 B) 5 C) 9 D) 10(10)若有以下定义和语句: int a10=1,2,3,4,5,
4、6,7,8,9,10,*p=a; 则不能表示a数组元素的表达式是( ) A) *p B) a10 C)*a D) ap-a (11)下面程序的输出是( ) main( ) char *s=121; int k=0, a=0, b=0; do k+; if(k%2=0) a=a+sk-0;continue; b=b+sk-0; a=a+sk-0; while (sk+1); printf(k=%d a=%d b=%dn,k,a,b); A) k=3 a=2 b=3 B) k=3 a=3 b=2 C) k=2 a=3 b=2 D) k=2 a=2 b=3 (12) 下面程序的输出是( ) main
5、( ) unsigned a=32768; printf(a=%dn, a); 运行结果: -32768 A)a=-32768 B)a=32767 C)a=-32767 D)a=-1 (13) 若有以下定义: float x; int a,b; 则正确的switch 语句是( ) A)switch(x) B) switch(x) case1.0: printf(*n); case1, 2: printf(*n); case2.0: printf(*n); case3: printf(*n); C) switch (a+b) D) switch (a+b); case 1: printf(n);
6、 case 1: printf(*n); case 1+2: printf(*n); case 2: printf(*n); (14) 以下程序输出的结果是( ) main( ) char w 10=ABCD,EFGH,IJKL,MNOP, k; for (k=1;k=10 or a=0|a=10 &a=10 | a=0 (23) 有如下程序 main( ) int x=1, a=0, b=0; switch(x) case 0: b+; case 1: a+; case 2: a+; b+; printf(“a=%d,b=%dn”,a,b); 该程序的输出结果是( ) A) a=2,b=1
7、B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 (24) 有如下程序 main( ) float x=2.0, y; if(x0.0) y=0.0; else if(x10.0) y=1.0/x; else y=1.0; printf(“%fn”,y); 该程序的输出结果是( ) A) 0. B) 0. C) 0. D) 1. (26) 有如下程序 main( ) int i, sum; for(i=1;i6) n-; printf(“%d”,n); 该程序段的输出结果是( ) A) 987 B) 876 C) 8765 D) 9876 (29) 设有说明语句:char a=
8、72;则变量a( ) A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法 (30) 有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是( ) A) 3 B) 4 C) 5 D) 有语法错 (31) 有如下程序 int func(int a,int b) return(a+b); main( ) int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%dn”,r); 该程序的输出的结果是( ) A) 12 B) 13 C) 14 D) 15 (32) 有如下程
9、序段 int *p, a=10,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为( ) A) 12 B) 11 C) 10 D) 编译出错 (33) 对于基类型相同的两个指针变量之间,不能进行的运算是( ) A) 2) return(fib(n-1)+fib(n-2); else return(2); main( ) printf(“%dn”, fib(3); 该程序的输出结果是( ) A) 2 B) 4 C) 6 D) 8 (35) 在C语言中,函数的隐含存储类别是( ) A) auto B) static C) extern D) 无存储类别 (36) 有如下程序 #defi
10、ne N 2 #define M N+1 #define NUM 2*M+1 main( ) int i; for(i=1;i=NUM;i+) printf(“%dn”,i); 该程序中的for循环执行的次数是( ) A) 5 B) 6 C) 7 D) 8 (37) 有以下函数 char fun(char *p) return p; 该函数的返回值是( ) A) 无确切的值 B) 形参p中存放的地址值 B) 一个临时存储单元的地址 D) 形参p自身的地址值 (38) 有如下程序段 int a=14,b=15,x; char c=A; x=(a&b)&(cB); 执行该程序段后,x的值为( )
11、A) true B) false C) 0 D) 1 (39) 有如下说明 int a10=1,2,3,4,5,6,7,8,9,10, *p=a; 则数值为9的表达式是( ) A) *p+9 B) *(p+8) C) *p+=9 D) p+8 (40) 若有以下的定义:int t32;能正确表示t数组元素地址的表达式是( ) A) &t32 B) t3 C) t1 D) t2 (41) 有如下程序 main( ) char ch25=“6937”, ”8254”, *p2; int i,j,s=0; for(i=0;i2;i+) pi=chi; for(i=0;i0; j+=2) s=10*s
12、+pij-0; printf(“%dn”,s); 该程序的输出结果是( ) A) 69825 B) 63825 C) 6385 D) (42)若有以下的定义: int a =1,2,3,4,5,6,7,88,9,10, *p=a; 则值为3的表式是( ) A) p+=2, *(p+) B) p+=2,*+p C) p+=3, *p+ D) p+=2,+*p(43)假定所有变量均已正确说明,下列程序段运行后x的值是( ) a=b=c=0; x=35; if (!a) x-; else if(b) ; if(c) x=3; else x=4; A)34 B)4 C)35 D)3(44)在以下一组运
13、算符中,优先级最高的运算符是( ) A)= B)= C)% D)&(45)若有以下定义和语句: int w23, (*pw)3; pw=w; 则对w数组元素非法引用是( ) A)*(w0+2) =*w02 B)*(pw+1)2 C)pw00 =*w00 D)*(pw1+2) =*w12(46)若有以下程序片段: char str =abn012; printf(%dn, strlen(str); 上面程序片段的输出结果是( ) A)3 B)4 C)6 D)12(47)函数调用strcat(strcpy(str1,str2),str3)的功能是( ) A)将串str1复制到串str2中后再连接到
14、串str3之后 B)将串str1连接到串str2之后再复制到串str3之后 C)将串str2复制到串str1中后再将串str3连接到串str1之后 D)将串str2连接到串str1之后再将串str1复制到串str3中(48)以下对C语言函数的有关描述中,正确的是( )A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B) C函数既可以嵌套定义又可以递归调用 解释: C函数可以递归调用,但不允许嵌套定义C) 函数必须有返回值,否则不能使用函数 D) C程序中有调用关系的所有函数必须放在同一个源程序文件中(49) 以下叙述中不正确的是( ) A)在C中,函数中的自动变量可
15、以赋初值,每调用一次,赋一次初值. B) 在C中,调用函数时,实在参数和对应形参在类型上只需赋值兼容. C) 在C中, 外部变量的隐含类别是自动存储类别. D)在C中, 函数形参可以说明为register变量.(50) 以下程序的输出结果是( )#define sub1(char a, char b) char c; c=a;a=b;b=c; #define sub2(char *a, char b) char c; c=*a;*a=b;b=c; #define sub3(char *a, char *b) char c; c=*a;*a=*b;*b=c;main( ) char a,b; a
16、=A;b=B;sub3(&a,&b);putchar(a); putchar(b); a=A;b=B;sub2(&a,b);putchar(a); putchar(b); a=A;b=B;sub1(a,b);putchar(a);putchar(b); A) BABBAB B) ABBBBA C) BABABA D) BAABBA(51) 错误的转义字符是 ( )A) 091 B) C) 0 D) (52) 设int a,b,c;执行表达式a=b=1,a+,b+1,c=a+b-后,a, b和c的值分别是 ( ) A) 2, 1, 2 B) 2, 0, 3 C) 2, 2, 3 D) 2, 1,
17、 3(53) 在C语言中,错误的常数是 ( ) A) 1E+0.0 B) 5 C) 0xaf D) 0L ( 54) 设int k; 则语句for(k=0; k=1; k+);和语句for(k=0; k=1;k+);执行的次数分别是 ( )A) 无限和0 B) 0和无限 C) 都是无限 D) 都是0(55)某文件中定义的静态全局变量(或称静态外部变量)其作用域是( )A) 只限某个函数 B) 本文件 C) 跨文件 D)不限制作用域二、程序填空题:(10) 函数pi的功能是根据以下近似公式求值: (*)/6=1+1/(2*2)+1/(3*3)+1/(n*n) 现在请你在下面的函数中填空,完成求的
18、功能。 #include “math.h” double pi(long n) double s=0.0; long i; for(i=1;iwp) p+; for(i=*n;ip;i-) wi= wi-1; wp=x; + *n; (15) fun1函数的调用语句为: fun1(&a, &b, &c); 它将三个整数按由大到小的顺序调整后依次放入a,b,c三个变量中,a中放最大数。请填空. void fun2 (int *x,int *y) int t; t=*x; *x=*y; *y=t; void fun1 (int *pa, int *pb, int *pc) if (*pc*pb)
19、fun2( pc, pb ); if (*pa*pc) fun2( pa, pc ); if (*pac & b+ca & a+cb) if( a=b | a=c | b=c ) printf(DY); if( a=b & b=c ) printf(DB); a2=a*a; b2=b*b; c2=c*c; if( a2+b2=c2 | a2+c2=b2 | b2+c2=a2 ) printf(ZJ); printf(n); else printf(NOn); 17.输出下列图形。1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 3 4 5 6 7 8 9 4 5 6 7 8
20、9 5 6 7 8 9 6 7 8 97 8 98 99main( ) int i, j;for(i=1; i=9 ; i+) for( j=i ; j=2; j-) switch( j ) case 0: printf(%4s,ABC); case 1: printf(%4s,DEF); case 2: printf(%4s,GHI); break; case 3: printf(%4s,JKL); default: printf(%4s,MNO); printf(n); 程序运行结果:MNOJKLMNOGHI19. main( ) static int j,a6=1,2; for(j=3;
21、 j6; j+) aj=aj/2+aj%3-aj-2; for(j=0; j6; j+) printf(%5d,aj); printf(n); 程序运行结果:12012-120. int a=10;int f(int a) int b=0; static int c=3; a+; +c; +b; return a+b+c; main( ) int i; for(i=0;i2;i+)print(%5d,f(a); printf(n);程序运行结果:161721. #define N 2#define M N+1#define NUM 2*M+1int fib(int n) return ntyp
22、e PROC.c main(int argc,char *argv )while(-argc0)printf(%s,argvargc);printf(n);写出执行下列命令后的输出结果C:PROG 2008 OLYMPIC BEIJING 程序运行结果: BEIJINGOLYMPIC20082004年4月二级C语言笔试试题及参考解答 一、选择题:1、1MB等于( ) A) 1000字节 B) 1024字节C) 1000*1000字节 D) 1024*1024字节2、与十六进制数200等值的十进制数为( ) A) 256 B) 512 C) 1024 D) 20483、所谓裸机是指( ) A)
23、单片机 B) 单板机 C) 不装备任何软件的计算机 D) 只装备操作系统的计算机 4、能将高级语言编写的源程序转换为目标程序的是( )A) 链接程序 B) 解释程序 C) 编译程序 D) 编辑程序5、在64位计算机中,一个字长所占字节数为( )A) 64 B) 8 C) 4 D) 1 6、在Windows环境下,当一个应用程序窗口被最小化后,该应用程序( )A) 继续在后台运行 B) 继续在前台运行C) 终止运行D) 暂停运行 7、在Windows环境下,能实现窗口移动的操作是( )A)用鼠标拖动窗口中的任何部位 B)用鼠标拖动窗口的边框C)用鼠标拖动窗口的控制按钮 D)用鼠标拖动窗口的标题栏
24、8、在Windows环境下,PrintScreen键的作用是( )A)打印当前窗口的内容 B)打印屏幕内容C)复制屏幕到剪贴板 D)复制当前窗口到剪贴板9、Internet的通信协议是( )A)TCP/IP B)BBS C)WWW D)FTP 10、下列叙述中正确的是( )A)计算机病毒只感染可执行文件 B)计算机病毒只感染文本文件C)计算机病毒只能通过软件复制的方式进行传播D)计算机病毒可以通过网络或读写磁盘方式进行传播11、一个算法应该具有确定性等5个特性,下面对另外4个特性的描述中错误的是( ) A)有零个或多个输入 B)有零个或多个输出 C) 有穷性 D)可行性 12、以下叙述中正确的
25、是( )A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译13、以下符合C语言语法的实型常量是( ) A)1.2E0.5 B)3.14.159E C).5E-3 D)E15 14、以下4组用户定义标识符中,全部合法的一组是()A) _main B) If C) txt D) int enclude -max REAL k_2 sin turbo 3COM _001 15、若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3 B)1+2=x
26、2 C)x3=0x12 D)x4=1+2=3; 16、设有以下定义 int a=0; double b=1.25; char c=A; #define d 2 则下面语句中错误的是( ) A)a+; B)b+ C)c+; D)d+;17、设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是( )A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b) 18、有以下程序 main( ) int x=102,y=012; printf(%2d,%2dn,x,y); 执行后输出结果是() A)10,01 B) 0
27、02,12 C)102,10 D)02,1019、以下4个选项中,不能看作一条语句的是() A) ; B)a=0,b=0,c=0; C)if(a0); D)if(b=0)m=1;n=2; 20、设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是( ) A)scanf(%d,pa); B)scanf(%d,a); C)scanf(%d,&pa); D)scanf(%d,*pa); 21、以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是()A) if (ab)&(bc) k=1; else k=0; B) if (ab)|(bc) k=1;else k
28、=0; C) if (ab) k=1; else if(bc) k=1; else k=0; 22、有以下程序main( ) char k; int i; for(i=1;i3;i+) scanf(%c,&k); switch(k) case 0: printf(anothern); case 1: printf(numbern); 程序运行时,从键盘输入:01,程序执行后的输出结果是( )A) another B) another C) another D) number number number number number another number 23、有以下程序main( ) i
29、nt x=0,y=5,z=3; while(z-0&+x5) y=y-1; printf(%d,%d,%dn,x,y,z); 程序执行后的输出结果是( )A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5 24、有以下程序 main( ) int i,s=0; for(i=1;i10;i+=2) s+=i+1; printf(%dn,s); 程序执行后的输出结果是() A)自然数19的累加和 B)自然数110的累加和 C)自然数19中的奇数之和 D)自然数110中的偶数之25、有以下程序 main( ) int i,n=0; for(i=2;i5;i+) do if(i%3
30、) continue; n+; while(!i); n+; printf(n=%dn,n); 程序执行后的输出结果是() A)n=5 B)n=2 C)n=3 D) n=4 26、若程序中定义了以下函数 double myadd(double a, double b) return (a+b); 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( ) A) double myadd(double a,b);B)double myadd(double,double); C)double myadd(double b,double a);D)double myadd(double x,doubley); 27、有以下程序 char fun(char x , char y) if(xy) return x; return y; main( ) int a=9,b=8,c=7; printf(%cn