C语言测试练习题库.ppt

上传人:牧羊曲112 文档编号:5426358 上传时间:2023-07-05 格式:PPT 页数:73 大小:297KB
返回 下载 相关 举报
C语言测试练习题库.ppt_第1页
第1页 / 共73页
C语言测试练习题库.ppt_第2页
第2页 / 共73页
C语言测试练习题库.ppt_第3页
第3页 / 共73页
C语言测试练习题库.ppt_第4页
第4页 / 共73页
C语言测试练习题库.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《C语言测试练习题库.ppt》由会员分享,可在线阅读,更多相关《C语言测试练习题库.ppt(73页珍藏版)》请在三一办公上搜索。

1、C 语言习题讲解,基本概念题,一个C程序的执行是从_。A)本程序的main函数开始,到main函数结束 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束,基本概念题,C语言规定:在一个源程序中,main函数的位置_。A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后,基本概念题,以下叙述正确的是_。A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程

2、中,可发现注释中的拼写错误,基本概念题,以下叙述不正确的是_。A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面,基本概念题,一个C语言程序是由_.A)一个主程序和若干子程序组成 B)函数组成C)若干过程组成 D)若干子程序组成,2以下叙述中,不正确的是【】。(A)一条 C 语句可以分写在多行中(B)一条 C 语句必须包含一个分号(C)单独一个分号不能构成一条 C 语句(D)在 C 程序中,注释说明可以位于程序的任何位置,【解析】C 语句中单独的一个分号构成空语句,故不正确的叙述是选项(C)

3、。,基本概念题,3下面【】是合法的 C 语句.(A)#define MY 100(B)a=25;(C)a=b=100(D)/*m=100;*/,【解析】选项(A)是编译预处理命令,(C)是表达式,(D)是注释说明,它们均不是 C 语句;只有(B)是合法的 C 语句。,基本概念题,5下面叙述中,正确的是【】。(A)C 程序中所有标识符都必须小写(B)C 程序中关键字必须小写,其他标识符不区分大小写(C)C 程序中所有标识符都不区分大小写(D)C 程序中关键字必须小写,其他标识符区分大小写,基本概念题,6以下叙述中,【】是正确的。(A)可以把 define 和 if 定义为用户标识符(B)可以把

4、define 定义为用户标识符,但是不能把 if 定义为用户标识符(C)可以把 if 定义为用户标识符,但是不能把 define 定义为用户标识符(D)define 和 if 都不能定义为用户标识符,【解析】define 是预处理命令,可以将其定义为用户标识符。if 是关键字,不能作为用户标识符使用。故上述叙述中只有选项(B)是正确的。,基本概念题,7下面四组字符串中,【】均是 C 语言的关键字。(A)double、while、if(B)goto、define、switch(C)for、printf、break(D)include、do、sizeof,【解析】define 和 include

5、是预处理命令,printf 是用于输出数据的系统函数名,均不是 C 语言的关键字。故只有选项(A)正确。,基本概念题,8下面四组字符串中,均可用做用户标识符的是【】。(A)void、define、WORD(B)a3_b3、_123、IF(C)For、_abc、case(D)2a、DO、sizeof,【解析】void、case 是关键字,sizeof 是运算符。故上述四组字符串中只有选项(B)均可用做为 C 语言的用户标识符。,基本概念题,9.若有定义 int a;char b;float c;则表达式 a*b-c 的类型是【】。(A)float(B)int(C)char(D)double,【解

6、析】变量 c 是 float 类型,在参加表达式运算时,系统会自动将其转换为 double类型,故表达式运算的结果也为 double 类型。,基本概念题,10设 t 是 double 类型变量,表达式 t=1,t+2,t+的值是【】。(A)4.0(B)3.0(C)2.0(D)1.0,【解析】这是一个逗号表达式。先计算 t=1,使变量 t 的值为 1.0;再计算 t+2,得到 3.0,此时没有赋值,故 t 仍然为 1.0;最后计算 t+,得到 1.0,它也是整个逗号表达式的值。,基本概念题,11若实型变量 x 和 y 已正确定义并赋值,则下面不合法的表达式是【】。(A)+y,x-(B)y=(x%

7、2)/10(C)y/=x+2(D)x=y=0,【解析】变量 x 和 y 是实型数据,不允许进行%运算。,基本概念题,12若变量已正确定义并赋值,下面合法的表达式是【】。(A)(int)a=b+7(B)a=7+b+c,+a(C)int(12.3%4)(D)a=a+2=c+b,【解析】选项(A)中(int)a 是一个表达式,得到的结果是一个整型数值而不是变量,不能出现在赋值号左边;(C)中 int 没有用括号括起,因此是类型标识符,不是类型转换运算符,此外实型数 12.3 也不能参加%运算;(D)是多重赋值,等价于 a=(a+2=c+b),要先计算 a+2=c+b,而它是一个非法的赋值表达式。只有

8、(B)是合法的逗号表达式。,基本概念题,13设 a 是整型变量,下面不能正确表达数学关系 1010&a=15),【解析】在 C 语言中,关系表达式 10a15 表示 10a 比较的结果(不是 0 就是 1)再与 15 比较,它不能正确表示数学关系 a 的值在 10 到 15 之间(注意:无论 a 的值是什么,表达式 10a15 的值总为 1),而其他选择则均可以表示这种关系。,基本概念题,14能够正确表示 a 不等于 0 为真的关系表达式是【】。(A)a=0(B)a0(C)a(D)!a,【解析】a=0 是赋值表达式,其值为 0;在 C 语言中,没有运算符,故 a0 是无效的表达式;!a 表示变

9、量 a 等于 0 为真(即 a 的值为 0 时,表达式 a 为逻辑假,!a 则为真);而只有当 a 的值不是 0(即 a 是正数或负数)时,表达式 a 为真。,基本概念题,15下面语句中,错误的是【】。(A)m=ca0;(D)w+=-m?0:1;,【解析】选项(A)是赋值语句;(C)是逗号表达式语句;(D)是条件表达式语句;而(B)是不合法的变量定义语句。,基本概念题,16能正确定义整型变量 a 和 b,并为它们赋初值 5 的语句是【】。(A)a=b=5;(B)int a,b=5;(C)int a=b=5;(D)int a=5,b=5;,【解析】选项(A)是赋值语句,不是变量定义;(B)定义变

10、量 a 和 b,但仅对 b 进行初始化;(C)是不合法的变量定义;只有(D)定义了变量 a 和 b,并分别为它们赋初值 5。,基本概念题,17以下程序段的输出结果是【】。int u=020,v=0 x20,w=20;printf(%d,%d,%dn,u,v,w);(A)16,32,20(B)20,20,20(C)16,16,20(D)32,16,20,基本概念题,18以下程序段的输出结果是【】。char c1=a,c2=c;printf(%d,%cn,c2-c1,c2-a+C);(A)2,M(B)3,E(C)2,E(D)格式控制与输出项不一致,结果不确定,基本概念题,19下面程序在运行时,若从

11、键盘上输入 98765432156(表示回车),则程序的输出结果是【】。main()int a;float b,c;scanf(%2d%3f%4f,(A)a=98,b=765,c=4321(B)a=98,b=765.000000,c=4321.000000(C)a=98,b=765.0,c=4321.0(D)a=98,b=765.0,c=4321.56,【解析】执行 scanf 语句,将输入数据中的 98 赋给变量 a,765 赋给 b,4321 赋给 c,忽略 5 以后的数字。输出时,实型变量 b 和 c 的小数部分自动取 6 位。,基本概念题,20设有定义语句 int x;float y;

12、当执行 scanf(“%3d%f”,语句时,从第一列输入数据 12345678(表示空格,表示回车),则 y 的值是【】。(A)123.0(B)678.0(C)45.678(D)45.0,【解析】执行 scanf 语句时,将输入数据的前三位数字 123 赋给 x,后面到空格前为止的两位数字 45 赋给实型变量 y,忽略空格后面的数字。故 y 的值是 45.0。,基本概念题,基本概念题,若x,i,j和k都是int型变量,则执行下面表达式后x的值为_。x=(i=5,j=10,k=20)A)5 B)10 C)20 D)35,基本概念题,假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的

13、值是_。A)7 B)8 C)6 D)2,基本概念题,数字字符0的ASCII值为48,若有以下程序 main()char a=1,b=2;printf(“%c,”,b+);printf(“%dn”,b-a);程序运行后的输出结果是 _。(A)3,2(B)50,2(C)2,2(D)2,50,2005年4月全国计算机等级考试二级笔试题,21下面程序的输出结果是【】。main()double d;float f;long m;int i;i=f=m=d=20/3;printf(%d%ld%.1f%.1fn,i,m,f,d);(A)6 6 6.0 6.0(B)6 6 6.7 6.0(C)6 6 6.0

14、6.7(D)6 6 6.7 6.7,【解析】赋值表达式 i=f=m=d=20/3 等价于 i=(f=(m=(d=20/3)。20/3 的值是 6(注意不是 6.666),赋给 double 类型变量 d 是 6.0,再分别赋给 long 类型变量 m、float 类型变量 f 和 int 类型变量 i,分别是 6、6.0 和 6。在 printf 语句中变量 f 和 d 按%.1f 格式输出时,输出为 6.0。,基本概念题,22已知字母 A 的 ASCII 值为十进制数 65,下面程序的输出是【】。main()char ch1,ch2;ch1=A+5-3;ch2=A+6-3;printf(%d

15、,%cn,ch1,ch2);(A)67,D(B)67,C(C)B,C(D)C,D,【解析】程序中表达式 A+5-3 的值是 67(等价于 65+53-51),A+6-3的值是 68,分别赋给 ch1 和 ch2。按%d 和%c 格式输出它们的值时,分别是 67 和大写字母 D。,基本概念题,23语句 printf(“%dn”,!9);的输出结果是【】。(A)0(B)1(C)9(D)-9,【解析】表达式!9 等价于(!(!9)。!9 的值是 0(9 是非 0 值,对其进行逻辑非运算,得到 0),再进行!0 运算,得到 1。,基本概念题,24下列程序的执行结果是【】。main()int a=100

16、,b;b=a+100?a+100:a+200;printf(%d%d,a,b);(A)101 201(B)101 301(C)100 200(D)100 300,【解析】表达式 b=a+100?a+100:a+200 等价于 b=(a+100)?(a+100):(a+200)。先计算条件表达式 a+100,取 a 的值(为 100)与 100 进行比较,为 0,且 a 自增为 101;再计算 a+200,得到整个条件表达式的值 301,赋给 b。故输出是 101 和 301。,基本概念题,基本概念题,在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为_。A)chari

17、nt long int=floatdoubleB)char=intlong int=floatdoubleC)char int long int=float=doubleD)char=int=long int=floatdouble,4下面关于 C 源程序的函数的说法中,【】是正确的。(A)函数体中可以不包含任何语句(B)函数体可以使用花括号或圆括号括起来(C)如果没有参数,函数名后面的圆括号可以省略(D)函数可以不需要定义函数名,基本概念题,基本概念题,有以下程序main()int m=12,n=34;printf(%d%d,m+,+n);printf(%d%dn,n+,+m);程序运行后的

18、输出结果是_。A)12353514 B)12353513C)12343514D)12343513,2005年4月全国计算机等级考试二级笔试题,基本概念题,有定义语句:int b;char c10;,则正确的输入语句是_。A)scanf(%d%s,2005年4月全国计算机等级考试二级笔试题,基本概念题,下面四个选项中,均是不合法的用户标识符的选项是_。A)A B)float C)b-a D)一123 P_0 1a0 goto temp do _A int INT,基本概念题,C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A)必须为字母 B)必须为下划线C)必须为字母或下划线

19、 D)可以是字母,数字和下划线中任一种字符,基本概念题,下面正确的字符常量是_。A)a B)C)W D)以下选项中,不能作为合法常量的是 _。(A)1.234e04(B)1.234e0.4(C)1.234e+4(D)1.234e0,基本概念题,若有代数式3ae/bc,则不正确的C语言表达式是:A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3,基本概念题,已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是_。A)x%(-3)B)w+=-2C)k=(a=2,b=

20、3,a+b)D)a+=a-=(b=4)*(a=3),基本概念题,若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是_。A)2500000 B)2.750000 C)3.500000 D)0.000000。,x+a%3*(int)(x+y)%2/4,基本概念题,sizeof(float)是_。A)一个双精度型表达式 B)一个整型表达式C)一种函数调用D)一个不合法的表达式表达式18/4*sqrt(4.0)/8值的数据类型为:A)int B)float C)double D)不确定,基本概念题,已有如下定义和输入语句,若要求a1,a

21、2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是int a1,a2;char c1,c2;scanf(%d%c%d%c,A)10A 20B B)10 A 20 B C)10A20 D)10A20 B。,基本概念题,有以下程序 main()int m,n,p;scanf(m=%dn=%dp=%d,若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_。A)m=123n=456p=789 B)M=123 N=456 P=789 C)m=123,n=456,p=789 D)123 456 789,基本概念题,下关于运

22、算符优先顺序的描述中正确的是_。A)关系运算符 算术运算符 赋值运算符 逻辑与运算符 B)逻辑 运算符 关系运算符 算术运算符 赋值运算符 C)赋值运算符 逻辑与运算符 关系运算符 算术运算符 D)算术运算符 关系运算符 赋值运算符 逻辑与运算符下列运算符中优先级最高的是_。A)B)+C)&D)!=,基本概念题,已有定义:char a=“xyz”,b=x,y,z;,以下叙述中正确的是_。A)数组a和b的长度相同 B)a数组长度小于b数组长度 C)a数组长度大于b数组长度 D)上述说法都不对,填空类的选择,已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为_。main()int a;

23、float f;printf(nInput number:);/*输入语句*/printf(nf=%f,a=%dn,f,a);Input number:4.5 2A)scanf(%d,%f,填空类的选择,阅读以下程序,当输入数据的形式为25 13 10正确的输出结果为_。main()int x,y,z;scanf(%d,%d,%d,。A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值,填空类的选择,有输入语句:scanf(“a=%d,b=%d,c=%d”,为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是_。A)132(回车)B)1,3,2(回车)C)a

24、=1b=3c=2(回车)D)a=1,b=3,c=2(回车),填空类的选择,能正确表示“当x 的取值在1,10和200,210范围内为真,否则为假”的表达式是。A)(x=1)&(x=200)&(x=1)|(x=200)|(x=1)&(x=200)&(x=1)|(x=200)|(x=210),填空类的选择,以下程序的运行结果是_。#include stdio.h main()int a,b,d=241;a=d/100%9;b=(-1)A)6,1 B)2,1 C)6,0 D)2,0,填空类的选择,有以下程序 main()int i=1,j=2,k=3;if(i+=1 程序运行后的输出结果是 _。(A

25、)1 2 3(B)2 3 4(C)2 2 3(D)2 3 3,填空类的选择,请阅读以下程序:main()int a=5,b=0,c=0;if(a=b+c)printf(*n);else printf($n);以上程序:A)有语法错不能通过编译 B)可以通过编译但不能通过连接 C)输出*D)输出$,下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空:#indude stdio.h main()int m=0,n=0;char c;while(_【1】_。)!=n)if(c=A【1】A)c=putchar()B)getchar()C)

26、c=getchar()D)scanf(%c,c),填空类的选择,下面程序的运行结果是:#include main()int y=10;do y-;while(-y);printf(%dn,y-);A)-1 B)1 C)8 D)0,填空类的选择,有以下程序 main()int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+7)if(pi%2)j+=pi;printf(“%dn”,j);程序运行后的输出结果是 A)42 B)45 C)56 D)60,填空类的选择,有以下C程序 main()char a7=“a00a00”;int j;j=strlen(a);

27、printf(“%dn”,j);程序运行后的输出结果是 A)6 B)7 C)2 D)4,填空类的选择,int f1(int x,int y)return xy?x:y;int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%dn”,e,f,g);以上程序运行后的输出结果是 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7,填空类的选择,void f(int*x,int

28、*y)int t;t=*x;*x=*y;*y=t;main()int a8=1,2,3,4,5,6,7,8,i=0,*p,*q;p=a;q=程序运行后的输出结果是 A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1,填空类的选择,main()int a33,*p,i;p=程序运行后的输出结果是 A)0 1 2 B)1 2 3 C)2 3 4 D)3 4 5,填空类的选择,#define N 20 fun(int a,int n,int m)int i,j;for(i=m;i=n;i-)ai+1=ai;m

29、ain()int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,9);for(i=0;i5;i+)printf(%d,ai);程序运行后的输出结果是 A)10234 B)12344 C)12334 D)12234,填空题,-.字符串的结束标记是【2】。-.以下程序的输出结果是【3】main()int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(%d,%dn,a,b);,2,1,。,-C 程序中的注释说明必须以【1】开头,以【2】结束。【答案】【1】/*【2】*/-一个 C 程序必定从 函数开始执行。【答案】主(或 main)-C 语言中的标识符可以分

30、为、预定义标识符和用户定义标识符。【答案】关键字,填空题,-C 语言的标识符只能由字母、数字和 3 种字符组成。【答案】下划线-标识符 double、define、const、short 和 case 中只有 不是关键字。【答案】define-结构化程序中的三种基本结构是:顺序结构、【1】结构和【2】结构。【答案】【1】选择【2】循环-系统默认的 C 语言源程序文件的扩展名是【1】,经过编译后生成的目标文件扩展名是【2】,经过链接后生成的可执行文件扩展名是【3】。【答案】【1】c【2】obj【3】exe,填空题,-在 Turbo C 中,一个 int 型变量在内存中所占的字节数是【1】,一个

31、float 型变量在内存中所占字节数是【2】。【答案】【1】2【2】4-在 C 语言中,字符串常量“Howareyou?nIamfine.”的长度是【1】个字节(其中表示空格),它在内存中存储时需要占用【2】个字节的存储空间。【答案】【1】23【2】24,填空题,-定义字符变量 ch,并使它的初值为数字字符 5 的变量定义语句是。【答案】char ch=5;(或 char ch=53;)-若定义 float x=70.3;则表达式(long)x*A+38.5 的值是 类型。【答案】double-若有定义 int a=3,b=2,c;则表达式 c=b*=a-1 的值为。【答案】4 表达式 9/2

32、*2=9*2/2 的值是。【答案】0,填空题,-若定义 int a=1,b=2;执行 printf(“%3d%-3d”,a,b);后的输出是(用表示空格)。【答案】12-若定义 float a=1352.97856;则 printf(“%6.3f%6d”,a,(int)a);的输出是(用表示空格)。【答案】1352.9791352,填空题,填空题,-.设有以下程序:main()int n1,n2;scanf(%d,则输出结果为【4】,7531,填空题,-.以下函数的功能是:求x的y次方,请填空 double fun(double x,int y)int i;double z;z=x;for(i

33、=1;iy;i+)z=【1】;return(z);,z*x,填空题,-.右边程序中函数fun的功能是:根据形参m,计算如下公式的值:y=1+1/2!+1/3!+1/4!+1/m!如:若m=6,则应输出:1.718056 请补充函数fun中的两处空白,使它能得出正确的结果,#include stdio.hfloat fun(int m)【1】;int i;for(i=2;i=m;i+)t=t*1/i;y+=t;【2】;main()int n;printf(nPlease enter n:);scanf(%d,float t=1.0,y=1.0,return(y),填空题,-.右边程序中,主函数调

34、用了matrixMax函数,实现在N行M列的二维数组中,找出每一行上的最大值请填空,#define N 3#define M 4void matrixMax(int xNM)int i,j,p;for(i=0;iN;i+)p=0;for(j=1;jM;j+)if(xipxij)【1】;printf(“第%d行的最大值是%dn,i,【2】);main()int xNM=1,5,7,4,2,6,4,3,8,2,3,1;【3】,p=j,xip,matrixMax(x);,填空题,-.若已定义:int a10,i;以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋12345678910;在第二个循环中使a数组前10个元素中的值对称折叠,变成1234554321请填空 fun(int a)int i;for(i=1;i=10;i+)【1】=i;for(i=0;i5;i+)【2】=ai;,ai-1,a9-i,填空题,-.以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句 int fun(int*x,int*y)return(*x)+(*y);main()int a=5,b=8;【1】;/*定义变量p*/p=fun;printf(“%dn”,p(该程序的输出结果是【2】,int(*)p(),13,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号