C语言试题可编辑修改word版.docx
- 文档编号:9946312
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:17
- 大小:25.35KB
C语言试题可编辑修改word版.docx
《C语言试题可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《C语言试题可编辑修改word版.docx(17页珍藏版)》请在冰点文库上搜索。
C语言试题可编辑修改word版
第1章C语言概述一、选择题:
1、一个C语言程序是由C组成。
A.主程序B.子程序C.函数D.过程2、一个C语言程序总是从C开始执行。
A.主程序B.子程序C.主函数D.函数3、以下叙述正确的是D。
A.在C程序中,main函数必须位于子程序的最前面
B.C程序的每一行中只能写一条语句
C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
D.C语言本身没有输入输出语句
5、下面标识符中,不合法的用户标识符为D。
A.PadB.a_10C._124D.a#b
15、下列关于c语言用户标识符的叙述中正确的是B。
A.用户标识符中可以出现下划线和中划线(减号)
B.用户标识符中不可以出现中划线,但可以出现下划线
C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
1、下列选项中,可以作为C语言标识符的是()
A、3stuB、#stuC、stu3D、stu.32、下列选项中,不可以作为C语言标识符的是()
A、numB、turbo_cC、printfD、student33、请选出可用作C语言用户标识符的一组标识符()
A、void,define,WORDB、a3_b3,_123,IF_A
C、FOR,——abc,CaseD、2a,Do,Sizeof4、以下叙述正确的是。
A.在C程序中,main函数必须位于子程序的最前面
B.C程序的每一行中只能写一条语句
C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
D.C语言本身没有输入输出语句
【答案】D
【解析】每一个C源程序都必须有、且只能有一个主函数(main函数),但是不必位于最前面,编译之后,运行是会自动搜寻到main函数并开始执行,A项错误;书写程序时,为了清晰,便于阅读和理解,一般是一个说明或一个语句占一行,但这不是必须的,B项错误;编译过程中不对注释进行编译,所以发现不了编译中的拼写错误,C项错误;C语言本身没有输入输出语句,scanf函数和printf函数是标准输入输出库函数,其头文件为stdio.h,D项为答案。
5、下面标识符中,不合法的用户标识符为。
A.PadB.a_10C._124D.a#b
【答案】D
【解析】C语言中规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。
D包含‘#’,是不合法的;
6、是C语言提供的合法的数据类型关键字。
A.FloatB.signedC.integerD.Char
【答案】B
【解析】在C语言中,关键字都是小写的,所以A和D项错误;integer是Vb的关键字,不是C语言的关键字。
7、不正确的字符串常量是。
A.‘abc’B.“12’12”C.”0”D.”“
【答案】A
【解析】字符串常量是由一对双引号括起的字符序列。
A项用的单引号,显然错误;B项,表示的字符序列是:
12’12;C项表示的字符序列是0;D项表示的字符序列是一个空格。
8、设有以下定义:
#defined2
inta=0;doubleb=1.25;charc=’A’;
则下面语句中错误的是。
A.a++;B.b++;C.c++;D.d++;
【答案】D
【解析】因为用define定义的d是常量,其值是不能改变的,D项错误;而a,b,c都是变量,尽管它们都有初赋值,但它们的值允许改变。
9、C语言程序的执行,总是起始于【】。
A)程序中的第一条可执行语句B)程序中的第一个函数
C)main函数D)包含文件中的第一个函数
分析:
在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。
本题正确答案为C。
10、下列说法中正确的是【】。
A)C程序书写时,不区分大小写字母
B)C程序书写时,一行只能写一个语句
C)C程序书写时,一个语句可分成几行书写
D)C程序书写时每行必须有行号
分析:
C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。
本题正确答案为C。
11、下面对C语言特点,不正确描述的是【】。
A)C语言兼有高级语言和低级语言的双重特点,执行效率高
B)C语言既可以用来编写应用程序,又可以用来编写系统软件
C)C语言的可移植性较差
D)C语言是一种结构式模块化程序设计语言
分析:
C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。
本题正确答案为C。
12、C语言源程序的最小单位是【】。
A)程序行B)语句C)函数D)字符
分析:
程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。
本题正确答案为D。
13、以下四项中属于C语言关键字的是【】。
A)CHARB)defineC)unsignedD)return
分析:
C语言有32个关键字(或称保留字),它们都有特定的含意,并且由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的错误拼写。
本题正确答案为C。
32.下列字符串不符合标识符规定的是【】。
A)SUMB)sumC)3cdD)end
分析:
标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
二、填空题:
1、一个C语言的语句至少应包含一个分号。
2、C源程序的基本单位是函数。
3、函数是具有相对独立功能的程序段。
4、C语言中的标识符可以由3种字符组成,它们是:
英文字母、下划线、数字
,并且第一个字符必须是字母或下划线。
第3章数据类型、运算符与表达式一、选择题:
4、C语言中,最简单的数据类型是B。
A.整形、实型、逻辑型B.整型、实型、字符型
C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型6、B是C语言提供的合法的数据类型关键字。
A.FloatB.signedC.integerD.Char
7、不正确的字符串常量是A。
A.‘abc’B.“12’12”C.”0”D.”“
8、若定义:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是B
。
A.7B.2.50000C.3.500000D.0.00000
9、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’
+’6’-’3’;后,c2中的值为A。
A.DB.68C.CD.不确定的值11、执行下面程序段的输出结果为B。
intx=13,y=5;cout< A.3B.2C.1D.0 12、对于int型变量k1,k2,k3,k4,若用以下语句: cin>>k1>>k2; cin>>k3>>k4; 将10赋给k1,k3,将20赋给k2,k4,则应按B格式输入数据。 A.1020 13、设有以下定义: #defined2 inta=0;doubleb=1.25;charc=’A’; 则下面语句中错误的是D。 A.a++;B.b++;C.c++;D.d++; 14、有定义语句: intx,y;,若要通过cin>>x>>y;语句使变量x得到数值11,变量y 得到数值12,下面4组输入形式中,正确的是C。 A.1112 C.1112 16、有以下程序段: intm=0,n=0;charc=’a’;cin>>m>>c>>n;cout< 若从键盘上输入: 10A10 A.10,A,10B.10,a,10C.10,a,0D.10,A,0 1.、下列选项中,可以作为C语言常量的是() A)13.8eB)1/2C)‘M’D)”abc” 2.下列选项中,不可以作为C语言常量的是() A).88B)35.6e3C)4e-2D)3/5 3.下列选项中,正确的一组程序是() A)chara;B)charb;C)charc;D)chardA=’M’;b=’55’;c=”M”;d=”55” 4.已知字母’b’的ASCII码值为98,如ch为字符型变量,则表达式ch=’b’ +’5’-‘2’的值为() A)eB)dC)102D)100 5.下列程序的运行结果是() main() { charc1=’6’,c2=’0’;printf(“%c,%c,%d\n”,c1,c2,c1-c2); } A)因程序格式不合法,提示出错信息。 B)6,0,6 C)6,0,7 D)6,0,5 6.以下程序的输出结果是() main() { intx=010,y=10,z=0x10;printf(“%d,%d,%d\n”,x,y,z); } A)8,10,16 B)8,10,10 C)10,10,10 D)10,10,16 7.已知各变量的类型定义如下: inti=8,k,a,b; unsignedlongw=5;doublex=1.42,y=5.2; 则以下两组表达式中不符合C语言语法的表达式分别是: ⑴A)k=i++B)(int)x+0.4C)y+=x++D)a=2*a=3 ⑵A)x%(-3)B)w+=-2C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3) 11.在C语言中,合法的字符常量是 A)‘\084'B)‘\x43'C)‘ab'D)“\0” 【答案】B 【解析】字符常量是用单引号括起来的一个字符,据此定义,选项C和D显然错误。 A和B是转义字符。 转义字符是一种特殊的字符常量,以反斜线"\"开头,后跟一个或几个字符,它有两种写作形式,\ddd和\xhh,其中ddd和hh分别为八进制和十六进 制的ASCII代码。 A选项’\084’,反斜线’\’之后是三位数字,是采用的\ddd形式,不过084作为八进制显然是错误的;B项’\x43’,采用的\xhh形式,43作为两位十六进制数,对应ASCII代码67,对应的是字符’c’。 12.设有如下的变量定义: inti=8,k,a,b;unsignedlongw=5;doublex=1,42,y=5.2; 则以下符合C语言语法的表达式是 A)a+=a-=(b=4)*(a=3)B)x%(-3); C)a=a*3=2D)y=float(i) 【答案】A 【解析】A项是赋值表达式和算术表达式的结合,符合C语言语法;B项中,’%’是模运算符,要求运算符两侧均为整数,x为double,显然错误;C项是赋值表达式,要求赋值运算符的左侧是变量,3=2部分显然错误;D项,强制类型转换运算符使用错误,应为y=(float)i 13.以下程序运行后,输出结果是 A)cdeB)字符c的ASCII码值C)字符c的地址D)出错 main() {char*s="abcde";s+=2; printf("%ld\n",s); } 【答案】C 【解析】char*s="abcde",声明s是一个字符串指针,并且将字符数组"abcde"的首地址赋值给了s,s+=2,即是在原来的s地址上向前推进两个字节,又因为数组是在连续空间上存储的一组数据,且一个字符占一个字节,那么也就等价于由数组的第一个字节地址推进到第三个字符的地址,即字符c的地址。 答案为c 16.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A)c=b=a;B)(a=c)‖(b=c); C)(a=c)&&(b=c);C)a=c=b; 【答案】C 【解析】赋值运算符是自右向左运算的。 A项是将a的值赋给了b,又将b的值赋给了a,与题意不符;B项和C项都是逻辑运算,且都自左向右运算,它们的区别是: 或运算是先计算左边表达式的值,若为真,则结束运算,若为假,继续计算右边表达式,所以,如果a=c为真(只需要a>0),那么b=c语句不会执行,即不能完成c给b的赋值;与运算则是两边的表达式都要计算,所以,a=c和b=c都能得到执行,C为正确答案;D项是将b的值赋给了c和a 17.设有如下定义: intx=l,y=-1;,则语句: printf("%d\n",(x--&++y));的输出结果是 A)1B)0C)-1D)2 【答案】B 【解析】表达式x--&++y中,逻辑运算符‘&’的优先级最低,应该先计算它两边的表达式。 x--: x参与逻辑运算后,x的值再自减1,那么x—参与逻辑表达式的值为1;++y: y自增1后再参与逻辑运算,那么++y参与逻辑表达式的值为-1+1=0。 x--&++y即为1&0,值为0,答案为B。 18.若定义: inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 。 A.7B.2.50000C.3.500000D.0.00000 【答案】B 【解析】这是一个算术表达式,根据运算符的优先级,应该先计算(x+y),得到值7.2,之后对其进行强制数据类型转换(int),得到值7,取模运算和乘、除运算在同一优先级上,自左向右依次计算,则先进行取模运算,a%3即7%3=1,之后1*7=7,7%2=1,1/4=0,即a%3*(int)(x+y)%2/4的值为0,那么表达式的值即是x的值,为2.50000。 19.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’ +’6’-’3’;后,c2中的值为。 A.DB.68C.CD.不确定的值 【答案】A 【解析】字符是以ASCII码的形式存储的,表达式’A’+’6’-’3’的运算实际就是对应ASCII码的算数运算,加减运算是同一优先级的,所以’A’+’6’-’3’ =65+54-51=68,即D的ASCII的值。 此处定义c2是字符型,所以,c2的值是D;如果c2定义为整型,则c2的值是68。 20.下面叙述不正确的是【】。 A)C语句末尾必须有分号 B)C语言中无论是整数还是实数都能准确的表示 C)运算符“%”只能用于整数运算 D)乘除运算符优先级高于加减运算符 21.以下叙述正确的是【】。 A)C语句前面必须有行号 B)C程序中每行只能写一条语句 C)C语言本身没有输入输出语句 D)注释必须跟在一行语句的后面 22.复合语句应用【】括起来。 A)小括号〖〗B)方括号〖〗C)大括号〖〗D)尖括号 23.C语言语句一行写不下时,可以【】。 A)用逗号换行〖〗B)用分号换行〖〗C)用回车换行〖〗D)在任意一空格处换行 24.下面程序的输出是【】。 (“□”表示一个空格)inta=3366; printf("|%-08d|",a); A)|-0003366|〖〗B)|00003366|〖〗 C)|3366□□□□|〖〗D)输出格式非法 25.若有说明语句: inta;floatb;,以下输入语句正确的是【】。 A)scanf("%f%f",&a,&b); B)scanf("%f%d",&a,&b); C)scanf("%d,%f",&a,&b); D)scanf("%6.2f%6.2f",&a,&b);26.以下程序的输出结果是【】。 main() {intx=11,y=11;printf("%d%d\\n",x--,--y); } A)11,11〖〗B)10,10〖〗C)10,11〖〗D)11,10 27.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【】。 intx,y;scanf("%d%d",&x,&y); A)空格〖〗B)Tab键〖〗C)回车〖〗D)逗号 28.下面合法的语句是【】。 A)inta=8,b;b=++a++; printf("%d,%d",a,b++); B)inta;printf("\\"%d\\"",scanf("%d",&a)); C)chara;scanf("%c",&a); charb=scanf("b=%c",&b); D)charc=getchar();putchar((int)c); 29.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是【】。 inta;floatb; scanf("a=%d,b=%f",&a,&b); A)25□2.5 B)25,2.5 C)a=25,b=5.5 D)a=25□b=2.5 30.与数学公式a·b〖〗x·y不等价的语句是【】。 A)a*b/x*y B)a*b/x/y C)a*b/(x*y) D)a/(x*y)*b 31.下面不属于C语言的数据类型是【】。 A)整型B)实型C)逻辑型D)双精度实型 分析: 和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。 本题正确答案为C。 33.下面四个选项中,均是合法实数的选项是【】。 A)2e-4.2B)33e-4C)0.2e-.5D)-e5 分析: 实数有两种表示形式: 小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。 选项A)中的"2e-4.2",选项C)中的"0.2e-.5",选项D)中的"-e5"均是不合法的。 本题正确答案为B。 34.下列正确的字符型常量是【】。 A)"a"〖〗B)′\\\\′〖〗C)"\\r"〖〗D)277 分析: 字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。 本题正确答案为B。 35.若有说明语句charch1=′\\x41′;则ch1【】。 A)包含4个字符B)包含3个字符C)包含2个字符D)包含1个字符 分析: "\\x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。 本题正确答案为D。 36.下列程序段输出的字符串长度为【】。 printf("\\\\aaa\\′ccc\\bddd\\""); A)11B)12C)13D)17 分析: \\\\、\\′、\\b和\\"为转义字符,程序输出结果为: \\aaa′ccddd"。 本题正确答案为A。 37.下列运算符中,要求运算对象必须是整数的是【】。 A)/B)*C)%D)! 分析: 题目中"/"、"*"、"! "的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。 本题正确答案为C。 38.下面合法的赋值语句是【】。 A)x+y=2002;B)ch="green";C)x=(a+b)++;D)x=y=0316; 分析: 赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“++”不能用于表达式,选项C)也是错的。 本题正确 答案为D。 39.已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为【】。 A)int型B)float型C)double型D)char型 分析: 不同类型数据混合运算的转换规律是: 运算前float型数据会自动转换为double型,char型数据会自动转换为int型。 运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。 本题正确答案为C。 40.下面的程序运行后输出为【】。 #include {inta,b;floatc; b=5;c=6;c=b+7;b=c+1; a=sqrt((double)b+c);/*sqrt是开平方库函数,定义代码在math.h中*/ printf("%d,%f,%d",a+6,c,b); } A)11.000000,12.000000,13.000000 B)11.000000,12.000000,13 C)11.0000000,12,13D)11,12.000000,13 分析: C语言允许将一种类型的数据赋给另一种类型的变量,但是变量的类型并不会因为赋值而发生改变,如本题中将b+7,即12赋给float型变量c,c值应为12.000000而不是整数12,同样a=sqrt((double)b+c),赋值号右边是双精度数,但由于a是整形变量,故a的值为5。 本题正确答案为D。 二、填空题: 1、有以下语句段: intn1=10,n2=20; cout< 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10n2=20 6、以下程序运行后的输出结果是b。 voidmain() {charm;m='B'+32;cout< 7、设a=3,b=4,c=5,求下列表达式的值。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)! (a>b)&&! c||1(4)! (x=a)&&(y=b)&&08、执行下面的程序段后,a的值为20。 {inta,b;a=300;b=20; a=a+b; b=a-b; a=a-b;cout<<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题 编辑 修改 word