《c语言基础练习题及复习资料.docx》由会员分享,可在线阅读,更多相关《c语言基础练习题及复习资料.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、c语言基础练习题及答案 一、单项选择题1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为_C_的文件。 A、”.c” B、“.obj” C、“.exe” D、“.bas”2. 以下选项中不正确的整型常量是_C_。 A、 12L B、 -10 C、 1,900 D、 123U3. 表达式_C_的值是0。A、3%5 B、3/5.0 C、3/5 D、30|y0) 等价于_D_。A、!x0|!y0 B、!(x0)|!(y0) C、!x0&!y0 D、!(x0)&!(y0)5. 若变量已正确定义并赋值,表达式_D_不符合C语言语法。A、4&3 B、+a C、a=b=5 D、int(3.14)
2、6. 若变量已正确定义,执行语句scanf(%d%d%d ,&k1,&k2,&k3);时,_B_是正确的输入。 A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,407. 执行语句 printf(” _D_”, 2); 将得到出错信息。A、%d B、%o C、%x D、%f8. 设变量定义为“int s =hellonworldn;”,则数组s中有_B_个元素。A、12 B、13 C、14 D、159. 设变量定义为“int a2=1,3, *p=&a0+1;”,则*p的值是_B_。A、2 B、3 C、4 D、&a0+110. 若变量已正确定义并赋值,表达式
3、-k+ 等价于_A_。A、-(k+) B、(-k)+ C、-(k+1) D、-(+k)11. 在C 语言程序中,在函数内部定义的变量称为_D_。A、全局变量 B、全程变量 C、外部变量 D、内部变量12. 若x是整型变量,表达式 (x=10.0/4.0) 的值是_D_ 。A、2.5 B、 2.0 C、 3 D、213. 对于以下的变量定义,表达式_A_是正确的。 struct node char s10; int k; p4;A、p-k=2 B、p0.s=“abc” C、p0-k=2 D、p-s=a14. 下列运算符中,优先级从高到低依次为_D_。A、&,!,| B、|,&,! C、&,|,!
4、 D、 !,&,|15. 下列程序段的输出结果是_B_。 int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)+;printf(%d,*q);A、1 B、2 C、10 D、1116 以下各选项企图说明一种新的类型名,其中正确的是水量 (C)A) typedef v1 int; B) typedef v2=int;C) typedefv1 int v3; D) typedef v4: int;17. 以下选项中,非法的字符常量是 (C)A) t B) 17 C)“n” D) xaa18. 以下程序的输出结果是 (C)main() int i,
5、 a10;for(i=9;i=0;i-) ai=10-i;printf(“%d%d%d”,a2,a5,a8);A) 258 B) 741 C) 852 D) 36919. 以下程序的输出结果是(B)main() char st20= “hello0t”;printf(%d %d n”,strlen(st),sizeof(st);A) 9 9 B) 5 20 C) 13 20 D) 20 2020. 以下程序的输出结果是 (D)main() int a, b;for(a=1, b=1; a=10) break;if (b%3= =1) b+=3; continue; printf(“%dn”,a
6、);A) 101 B) 6 C) 5 D) 421. 以下程序的输出结果是 (D)union myun struct int x, y, z; u;int k; a;main() a.u.x=4; a.u.y=5; a.u.z=6;a.k=0;printf(%dn”,a.u.x);A) 4 B) 5 C) 6 D) 022. 以下程序段的输出结果是 (A)char s=141141abct;printf (%dn,strlen(s);A) 9 B) 12 C) 13 D) 1423. 以下程序的输出结果是 (B)main() char ch35=AAAA,BBB,CC;printf(%sn,c
7、h1);A) AAAA B) BBB C) BBBCC D) CC24. 不合法的main函数命令行参数表示形式是 (C)A) main(int a,char *c) B) main(int arc,char *arv)C) main(int argc,char *argv) D) main(int argv,char *argc)25. 有以下程序main() char *s=one,two,three,*p; p=s1; printf(%c,%sn,*(p+1),s0);执行后输出结果是 (C)A) n,two B) t,one C)w,one D) o,two26. 设有如下说明type
8、def struct int n; char c; double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是 (A)A) STD tt2=1,A,62,2, B,75;B) STD tt2=1,A,62,2, B,75;C) struct tt2=1,A,2, B;D)structtt2=1,A,62.5,2, B,75.0;27. 若变量c为char类型,则能正确判断出c为小写字母的表达式是( D )。A) a=c= a)|(c= z)C) (a=c) D) (c= a)&(c=A&ch,=Z)|(ch=a&ch0)y=1;else if(x=0)y=0;else y=-
9、1;_。 1 x0y= 0 x=0 -1 x03. 表达式 !5的值是_1_。4. 下列程序段的输出结果是_12_。printf(%xn, (0x19 1) & 0x17); 5. 下列程序段的输出结果是_ k=4 s=6_。 int k, s; for(k=0, s=0; kk) break ; else s += k; printf(k=%d s=%d, k, s);6. 下列程序段的输出结果是_15_。 #define MIN(x,y) (x)(y)?(x) : (y) printf(%d,10*MIN(10,15);7. 下列程序在运行时可能会出错,原因是_指针变量s未赋初值_。 #
10、include void main( ) char *s; gets(s); puts(s);8. 下列程序段的输出是_6 0_。# include int f(int m) static int k=0; int s=0; for(; k*s ) s=p;return(*s);main() int x5=12,21,13,6,18;printf(%dn,findmax(x,5);三、程序(段)填空题1设变量x, y, z已正确定义与赋值,请仔细阅读程序段,然后在程序段中填入正确的内容,使程序段与程序段有相同的功能。程序段A 程序段Bx=x+y;y=x-y;x=x-y;z=x+y; z=x ;
11、 x=y ;y=z; z=x+y;2请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1与函数f2有相同的功能。char *f1(char s , char t) int k; for(k=0; tk!= ; k+) sk=tk; sk= ; return s; char *f2(char *s, char *t) char *p=s ; while( *p+ = *t+)!= ) ; return s ; =一、单项选择题1. _D_是合法的用户自定义标识符。A、 b-b B、float C、 D、 _isw 2. 若变量已正确定义并赋值,表达式_B_不符合C语言语法。A、a*b/
12、c; B、3.14%2 C、2, b D、a/b/c 3. _C_是不正确的字符常量。A、n B、1 C、a D、1014. 在 C 程序中,用_B_表示逻辑值“真”。A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数5. _C_把x、y定义成float类型变量,并赋同一初值3.14。A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14;6. 若变量已正确定义,表达式_C_的值不是2。A、2&3 B、1b) k=0; else k=1;”与_C_等价。 A、k=(ab)
13、?1:0; B、k=ab;C、k=a=b; D、a=b ? 0 : 1;8. 设变量定义为“int a, b;”,执行下列语句时,输入_D_,则a与b的值都是10。 scanf(a=%d, b=%d,&a, &b);A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=109. 下列程序的输出结果是_D_。fun(int a, int b, int c) c =a*b; void main( ) int c; fun(2,3,c); printf(”%dn”,c);A、0 B、1 C、6 D、无法确定10. 在C程序中,若对函数类型未加说明,则函数的隐含类型为_A_。A
14、、int B、double C、void D、char 11. 表达式 strlen(”hello”) 的值是_B_。A、 4 B、 5 C、 6 D、 712. 设变量定义为“int a4;”,则表达式_D_不符合C语言语法。A、*a B、a0 C、a D、a+13. 设变量定义为“int x, *p=&x;”,则&*p相当于_A_。A、p B、*p C、x D、*&x14. 若变量已正确定义,_A_不能使指针p成为空指针。A、p=EOF B、p=0 C、p= D、p=NULL15. 对于以下的变量定义,表达式_D_不符合C语言语法。 struct node int len; char *p
15、k; x = 2, right, *p = &x; 16. 有如下程序int runc(int a,int b) return(a+b);main0 int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);该程序的输出的结果是 (D)A) 12 B) 13 C) 14 D) 1517. 对于基类型相同的两个指针变量之间,不能进行的运算是 (C)A) 2) return(fib(n-1)+fib(n-2);else return(2);main0 printf(“%dn”,fib(3); 该程序的输出结果是 (B)A 2 B 4 C 6 D 8
16、19. 有如下定义struct personchar name9; int age;strict person class10=“Johu”, 17,“Paul”, 19“Mary”, 18,“Adam 16,;根据上述定义,能输出字母M的语句是 (D)A) prinft(“%cn”,class3.mane);B) pfintf(“%cn”,class3.name1);C) prinft(“%cn”,class2.name1);D) printf(“%cn”,class2.name0);20. 以下所列的C语言常量中,错误的是 (B)A) 0xFF B) 1.2e0.5 C) 2L D) 72
17、21. 有以下程序段int k=0while(k=1)k+;while 循环执行的次数是 (A)A) 无限次 B) 有语法错,不能执行C) 一次也不执行 D) 执行1次22. 以下程序的输出结果是 (C)A) 0 B) 29 C) 31 D) 无定值fun(int x, int y, int z) z=x*x+y*y; main() int a=31; fun(5,2,a); printf(“%d”,a);23. 下列程序段的输出结果是 (A)A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2void fun(int *x, int *y) printf(“
18、%d %d”, *x, *y); *x=3; *y=4;main() int x=1,y=2; fun(&y,&x); printf(“%d %d”,x, y);24. 当调用函数时,实参是一个数组名,则向函数传送的是 (B)A) 数组的长度 B) 数组的首地址C) 数组每一个元素的地址 D) 数组每个元素中的值25. 以下程序的输出结果是 (A)A) 1 B) 2 C) 3 D) 4long fun( int n) long s; if(n= =1 | n= =2) s=2; else s=n-fun(n-1); return s;main() printf(“%ldn”, fun(3);
19、26. 以下程序的输出结果是 (B)A) 16 B) 2 C) 9 D) 1#define SQR(X) X*Xmain() int a=16, k=2, m=1; a/=SQR(k+m)/SQR(k+m); printf(“dn”,a);27. 以下函数返回a所指数组中最小的值所在的下标值fun(int *a, int n) int i,j=0,p;p=j;for(i=j;iif(aireturn(p);在下划线处应填入的是 (D)A) i=p B) ap=ai C) p=j D) p=i二、填空题1. 表示“xyz”的C表达式是_ x=y & y=z _。2. 下列程序段的输出是_1_。
20、printf(%on, 01011); 3. 下列程序段的输出是_6,90_。 int k; float s; for (k=0, s=0; k 7; k +) s += k/2;printf(%d, %fn, k, s); 4. 下列程序段的输出是_5,25_。#define f(a, b, x) a*x+bprintf(%d, %dn, f(3,2,1), f(6, 5, f(3, 2, 1);5. 下列程序段的输出是_*#*#_。main() int k; for(k=1; k0) p=argvk; printf(%sn, p); 11. 下列程序调用swap函数交换a与b的值,并输出交
21、换后的a与b的值。程序的输出结果是:After swap 5, 3。 void main( ) int a=3, b=5; swap( &a, &b ) ; printf(After s, %d, a, b); swap( int *p, int *q ) int t; t=*p; ; *p=*q ; *q=t ; 一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1) 计算机的存储器完整的应包括A) 软盘、硬盘 B) 磁盘、磁带、光盘C)
22、 内存储器、外存储器 D) RAM、ROM(2) 计算机中运算器的作用是A) 控制数据的输入/输出 B) 控制主存及辅存间的数据交换C) 完成各种算术运算与逻辑运算 D) 协调与指挥整个计算机系统的操作(3) 软磁盘处于写保护状态时,其中记录的信息A) 绝对不会丢失B) 不能被擦除,但能追加新信息C) 不能通过写磁盘操作被更新D) 不能以常规方式被删除,但可以通过操作系统的格式化功能被擦除(4) 光盘根据基制造材料与记录信息的方式不同,一般可分为A) CD、VCDB) CD、VCD、DVD、MP3C) 只读光盘、可一次性写入光盘、可擦写光盘D) 数据盘、音频信息盘、视频信息盘(5) 在计算机系
23、统中,可执行程序是A) 源代码 B) 汇编语言代码 C) 机器语言代码 D) ASCII码(6) 计算机软件系统包括A) 操作系统、网络软件 B) 系统软件、应用软件C) 客户端应用软件、服务器端系统软件 D) 操作系统、应用软件与网络软件(7) 目前,一台计算机要连入Internet,必须安装的硬件是A) 调制解调器或网卡 B) 网络操作系统C) 网络查询工具 D) WWW浏览器(8) 在多媒体计算机系统中,不能存储多媒体信息的是A) 光盘 B) 磁盘 C) 磁带 D) 光缆(9) 要将当前盘当前目录下一个文本文件内容显示在屏幕上,正确的命令形式是(10) 下列更改文件名的命令中正确的是A)
24、 REN A:file1 C:F1 B) RENAME A: A:file1 C:F1C) REN A:file1 F1 D) REN A:file1 SUBF1(11) 已知A盘为DOS系统启动盘,只有A:DOS下有自动批处理文件,其中内容为:CDDOSMD USERCD USER由A盘启动DOS系统后,A盘的当前目录是A) DOS B) DOSUSER C) D) USER(12) MS-DOS是A) 分时操作系统 B) 分布式操作系统C) 单用户、单任务操作系统 D) 单用户、多任务操作系统(13) 在Windows操作系统中,不同文档之间互相复制信息需要借助于A) 剪切板 B) 记事本
25、 C) 写字板 D) 磁盘缓冲器 (14) 在Windows操作系统中A) 同一时刻可以有多个活动窗口B) 同一时刻可以有多个应用程序在运行,但只有一个活动窗口C) 同一时刻只能有一个打开的窗口D) DOS应用程序窗口及Windows应用程序窗口不能同时打开着(15) 下列叙述中正确的是A) 所有DOS应用程序都可以在Windows操作系统中正确运行B) 所有DOS应用程序都不能在Windows操作系统中正确运行C) 大部分DOS应用程序可以在Windows操作系统中正确运行(16) 下列叙述中正确的是A) C语言编译时不检查语法B) C语言的子程序有过程与函数两种C) C语言的函数可以嵌套定
26、义 D) C语言所有函数都是外部函数(17) 以下所列的C语言常量中,错误的是A) 0xFF B) 1.2e0.5 C) 2L D) 72(18) 下列选项中,合法的C语言关键字是A) VAR B) cher C) integer D) default(19) 以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子 的C语言表达式是A) x/y*z B) x*(1/(y*z) C) x/y*1/z D) x/y/z(20) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是A) -3 B) 9 C) -12 D) 6(21) 设x、y、t均为int型
27、变量,则执行语句:x=y=3;t=+x|+y;后,y的值为A) 不定值 B) 4 C) 3 D) 1(22) 若变量已正确说明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:A) 10 B) 10.0,22.0,33.02233C) 10.0 D) 10 2222.0 33.0 33(23) 若执行以下程序时从键盘上输入9,则输出结果是A) 11 B) 10 C) 9 D) 8Main0 int n;scanf(%d,&n);if(n+10) printf(%dn,n);else printf
28、(%dn,n-);(24) 若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是A) swich(a+b); B) switch(a*a+b*b) case 1:y=a+b; break; case 3: case 0:y=a-b; break; case 1:y=a+b;break; case 3:y=b-a,break;C) switch a D) switch(a-b) case c1 :y=a-b; break default:y=a*b;breakcase c2: x=a*d; break case 3:case 4:x=a+b;breakdefault:x=a+b
29、; case 10:case 11:y=a-b;break; (25) 有以下程序段int k=0while(k=1)k+;while 循环执行的次数是A) 无限次 B) 有语法错,不能执行C) 一次也不执行 D) 执行1次(26) 以下程序执行后sum的值是A)15 B)14 C) 不确定 D)0min() int i , sum;for(i=1;i6;i+) sum+=i;printf(%dn,sum);(27) 有以下程序段int x=3do printf(%d,x-=2); while (!(-x);其输出结果是A) 1 B) 3 0 C) 1 -2 D) 死循环(28) 若变量c为c
30、har类型,能正确判断出c为小写字母的表达式是A) a=c= a)|(c= z)C) (a=c) D) (c= a)&(c= z)(29) 以下所列的各函数首部中,正确的是A) void play(var :Integer,var b:Integer)B) void play(int a,b)C) void play(int a,int b)D) Sub play(a as integer,b as integer)(30) 以下程序的输出结果是A) 0 B) 29 C) 31 D) 无定值fun(int x, int y, int z) z=x*x+y*y; main() int a=31;
31、fun(5,2,a);printf(%d,a);(31) 下列程序段的输出结果是A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2void fun(int *x, int *y) printf(%d %d, *x, *y); *x=3; *y=4;main() int x=1,y=2;fun(&y,&x);printf(%d %d,x, y);(32) 下列程序的输出结果是A) 非法 B)a4的地址 C)5 D)3main() char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5;printf(%d,*-p);(33) 下列程序的运行结果是
32、A) 6 3 B) 3 6 C) 编译出错 D) 0 0void fun(int *a, int *b) int *k;k=a; a=b; b=k;main() int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(%d %d, a, b);(34) 下面程序的输出结果是A) 0 B) 1 C) 10 D) 9main() int a =1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(%dn,*p+9);(35) 当调用函数时,实参是一个数组名,则向函数传送的是A) 数组的长度 B) 数组的首地址C) 数组每一个元素的地址 D) 数组每个元素
33、中的值(36) 设有以下说明语句struct ex int x ; float y; char z ; example;则下面的叙述中不正确的是A) struct结构体类型的关键字 B) example是结构体类型名C) x,y,z都是结构体成员名 D) struct ex是结构体类型(37) 以下只有在使用时才为该类型变量分配内存的存储类说明是A) auto与 static B) auto与 registerC) register与 static D) extern与 register(38) 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是A) EOF B) 1 C) 非零值 D) NULL(39) 以下程序的输出结果是A) 20 B) 21 C) 22 D)23main() 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);(40) 以下程序的输出结果是A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9main() int i, x33=1,2,3,4,5,6,7,8,9;for(i=
限制150内