2022年C语言经典习题及其答案详解 .pdf
《2022年C语言经典习题及其答案详解 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言经典习题及其答案详解 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学而不思则惘,思而不学则殆C 语言经典习题及其答案详解第二章 基本数据类型和表达式2.1 单项选择题1.下列字符列中,可以作为“ 字符串常量 ” 的是( ) ABC “ABC “ abc a 解 C 程序中,一个字符率常量是表示一个字符序列,书写时,用双引号字符前后括住这个字符序列。所以只有“ABC ” 是一个正确的字符率常量,其余都不是。其中, ABC 可作为标识符,字符列abc不能出现在C 程序中, a是一个字符常量。所以解答是。2.在以字节存储字符的系统中, n 在内存占用的字节数是()1 2 3 4 解一般来说,一个字符在内存中只占1 个字节, n 是转义字符,其意义是换行符,它作为一
2、个字符存储,在内存也只占1 个字节。所以解答是。3.字符串 “xyz”在内存占用的字节数是()3 4 6 8 解字符串中的每个字符占1 个字节,但C 程序在存储字符串时,要在后一个有效字符后面接上 1 个字符串结束的标记符 0 。这样,存储字符串常量 “xyz”需要 4 个字节。所以解答是。4.在以下字符列中,合法的长整型常数是() 0L 4962710 0.054838743 2.1869el0 解为表示不同范围的整数,整型数据分短整型、基本型和长整型,并对三种整型内部表示的高位的不同理解,又分别分成无符号和带符号两种。若要明确指明一个整数是长整型的,必须在整数之后接上字符L。所以0L 是一
3、个长整型的整型常量,而4962710 是基本整型数据,而对于用 2 个字节表示一个基本整型数据的系统来说,该 整 数 将 因 超 出 范 围 而 是 一 个 错 误 的 整 数 ;0.054839743 和 2.1869el0 都是double 型的实数。所以解答是。5.一个char 型数据,它的值在内存中存放的是()ASCll 代码值 BCD 代码值 内码值 十进制代码值解计算机存储字符,通常是存储字符的某种代码值。有许多种字符编码的方法,流行的是ASCII 代 码 。 在C 语 言 中 , Char 型 数 据 也 用ASCII 代码表示。所以解答是。6.设变量 m,n, a,b,c, d
4、 的初值均为0,执行(ma b)|(nc d)后, m,n 的值是( )0,0 0,1 l,0 1,1 解计算( ma b) |(n=c=d)的过程是先计算逻辑或的左运算分量( m=a=b)的值,由于赋位运算符的优先级比关系运算符 =的优先级低,又先计算 a=b.因 a,b 均为0 后,所以比较结果值为1.将 1 赋给变量m,使变量m 的值变为1 . 同时这个赋值运算的结果也是1,这样逻辑运算的左运算分量的值为1.由于逻辑或运算的左运算分量值为1,按照C 语言对逻辑或运算优化计算的规定,不再计算逻辑或的右运算分量,而直接得到逻辑或运算的结果为1 .由于逻辑或的右运算分量不曾计算过,所以变量n
5、的值也不为变化。这样,上述表达式计算后,变量m 的情为1,变量n 的值为0.所以解答是。7.设 a 为 5,执行下列计算后,b 的值不为2 的是( ) ba2 b6-(-a) ba2 b a3?3: 2 解因两个整型数据相除,结果是整数,当a 的值为5 时,计算表达式b=a 2 后,使b 的值为2.计算表达式b 6-( -a)是先计算子表达式(-a)的,先让a 的值减1 变成4,并以减1 后的a 为子表达式的结果,所以子表达式的结果为4,后使 b 的值为2.在计算表达式b= a%2 时,求余运算a 2 的结果为1,后使变量b 的值为1.计算表达名师归纳总结 精品学习资料 - - - - - -
6、 - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 学而不思则惘,思而不学则殆式 b a3?3:2 时,先计算条件表达式a 3?3: 2,以2 为结果,后也使变量b 的值为人所以解答是。8.执行语句 “x( a3,ba-) ;” 后, X,a, b 的值依次为()3, 3, 2 2, 3, 2 3, 2, 3 2, 3, 3 解计算表达式x( a=3,b=a-)时,先计算赋值号右端圆括号内的逗号表达式。逗号表达式要求各子表达式顺序计算,并以后予表达式的值为整个逗
7、号表达式的结果。所以该表达式计算时,先让变量a 的值为3,a-的值是a 当时的值,以该值为结果赋给变量b,并以该值为逗号表达式的值赋给变量x,然后a 的值被减少1.所以计算该表达式后,使变量x,a,b 的值依次为3,2,3.所以解答是。9.设整型变量m, n,a,b, c, d 均为1,执行“ ( m ab)( n ab)” 后 m,n 的值是( )0, 0 0,l 1,0 1 ,l 解表达式(m a b)( na b)是一个逻辑表达式,它的计算过程是先计算逻辑与的左分量( mab,其中又是先计算ab.因 ab 不成立,结果为0,将0 赋给变量m,后逻辑与的左分量结果为0.由于逻辑运算采用特别
8、的优化计算规则,当逻辑与的左分量结果为0 时,不再计算逻辑与的右分量,而直接以0 为逻辑与的结果。所以,上述表达式计算使m 的值变为0,而n 的值没有变,依旧为l.所以解答是。10,设有代码“ int a 3;” ,则执行了语句“ a+=a -= a*a;” 后,变量a 的值是()3 0 9 -12 解由于赋值运算符的结合性自右至左,语句“ a+=a -=a*a;” 的执行是先计算a*a,得到值 9,再计算 a-a*a,使 a 的值为 -6,接着计算 a+a,使a 的值为 -12.所以解答是。11.在以下一组运算符中,优先级高的运算符是( ) % 解常规运算符的优先级自高到低的排列顺序是算术运
9、算符、移位运算符、关系运算符。按位运算符、逻辑运算符、条件运算符、赋值运算符、逗号运算符。所以问题所给的四个运算符按优先级自高到低的排列顺序是,。所以解答是。14.若已定义x 和 y 为 double 类型,则表达式:xl, yx32 结果是( )l 2 2.0 2.5 解由于变量x 和 y 都是double 类型,表达式 x l, yx32 是先计算 x1,由于 1 是整型的, x 是 double 类型的,该计算先将整数1 转换成double 类型的1.0,并将1.0 赋给变量x.计算 y x32 是先求32 的值,因是两整数相除,结果是整型值 1,然后在计算 x1 时,也先将1 转换成
10、1.0,然后求得 xl 的值为2.0,后将该值赋给变量y,并得到整个表达式的值为2.0.所以解答是。15.设 a=1,b=2,c3, d 4 则表达式a b?a:c d?a:d 的结果为()4 3 2 1 解条件运算符的优先级比关系运算符的优先级低,并且它的结合性是自右向左的,所以表达式 a b?a: cd?a: d 可用圆括号等价地写成(a b?a: ( (cD)? A:D) 。因A B 成立,计算结果为A 的值1.所以解答是。17.下列表达式中,正确的C 赋值表达式是()a7b ca7 a 7b a7 a( 7b, b, a7) a 7b, ca 7 解赋值运算符是运算符之一,赋值运算也可
11、以出现在一般表达式中。赋值运算时,出现在赋值运算符左边的表达式应该是引用一个存储对象,例如变量。不可以是一个数值计算表达式。如表达式a7bca 7 因算术运算符比赋值运算符的优先级高,要把a 7 的结果赋给7b c,这是错误的。同样理由,表达式a 7b a 7 也是错误的。而表达式a( 7b,b, a7)就是正确的赋值表达式,它是先计算赋值号左边的括号内的表达式,括号表达式内是一个逗号表达式,远号表达式要求顺序逐一计算各子表达式,并以后一名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - -
12、- - - - 第 2 页,共 13 页 - - - - - - - - - 学而不思则惘,思而不学则殆个子表达式的值作为远号表达式的结果,后将该结果赋给变量a.而表达式a 7b,ca 7 则不是一个赋值表达式,而是一个逗号表达式,它由两个赋值子表达式组成。所以解答是。18.若有以下定义: char a;int b;float c; double d;则表达式a*b+d-c 值的类型为()float int char double 解基本类型的数据可以混合运算,但运算时,对要求运算分量类型相同的运算来说,如运算分量的类型不是全相同,则会有自动类型转换发生。类型自动转换规则规定类型低(简单)的向
13、类型高(复杂)的转换。各类型由高到低的排列顺序是 : long double 、 float 、 unsigned long 、 long 、unsigned int 、 int 这样,若有定义: char a ; int b ;float c; double d;则表达式a*b+d-c 的值的类型是 double 的。首先计算a*b,得到int 类型的值,接着计算a*b+d ,得到double 类型的值,后计算a*b+d-c,得到double 类型的值。所以解答是。19.表达式 “9 !=7” 的值是()true 非0 值0 1 解关系运算的结果只有0 和 1,若关系成立,则结果为1;若关系
14、不成立,则结果为0.因关系式9! 7 成立,所以表达式的结果为1.虽然 1 也是非0 值,在供选择的答案中有1,所以确切的解答是。22.设 a,b 和 c 都是int 型变量,且a 3,b4,c5,则下面的表达式中值为 0 的是( )a b a b a|b+c b-c !( (aB)! |1)解对于表达式a b,两个非O 运算分量的逻辑与结果为1.对于表达式a b,由于关系式成立,结果也为此又由于变量a 为非 0,表达式 a|b+c b-c 的结果也为1.对于表达式! ( ( ab)! c|1) ,先是计算( ab)得到结果1;计算!C 得到结果为0;再计算它们的逻辑与,结果为0. 继续与1
15、求逻辑或,得到结果为1.后,对1 求逻辑非,得到结果为0.所以解答是。23.设 ch 是 char 型变量,其值为A,则下面表达式的值是()ch( ch A ch Z)?( ch32) :ch A a Z z 解由于字符型变量ch 的值为 A,计算表达式 chh A ch Z )?( ch32) :ch,先计算其中条件表达式,由于条件(ch A h Z)成立,该条件表达式以ch3297 为结果,将该值赋给变量ch,以字符表达这个值为a。所以解答是。2.2 填充题1.在内存中,存储字符串“X”要占用 _个字节,存储字符 X要占用 _个字节。解计算机存储一个字符用1 个字节,存储字符串时,每个字符
16、要占用1 个字节,另在字符串的有效字符之后存储1 个字符串的结束标记符。所以存储字符率“ X要占用2 个字节,存储字符X只要1 个字节。2.在 C 程序中,判逻辑值时,用_表示逻辑值“ 真” ,又用 _表示逻辑值 假“ 。在求逻辑值时,用 _表示逻辑表达式值为” 真“ ,又用 _表示逻辑表达式值为” 假“ 。解在C 程序中,判逻辑值时,用非0 值表示真;而判逻辑值时,用值0 表示假。但逻辑表达式计算结果,逻辑表达式值为真是用1 表示的,而逻辑表达式的值为假,则用0 表示。3.定义符号常量的一般形式是_. 解定义符号常量用预处理命令的宏定义,其定义的一般形式是:define 符号常量名常量、5.
17、无符号基本整型的数据类型符为,双精度实型数据类型符为,字符型数据类型符为。 解 无 符 号 的 基 本 整 型 的 类 型 符 为unsigned int,或简写成unsigned. 双精度实型数据类型符为double,字符型数据类型符为char. 6.定义指定数据类型的变量时,较完整的一般形式是。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 学而不思则惘,思而不学则殆解要指定变量的存储类型,定义指定类型的
18、变量,其一般形式是:存储类型符数据类型符变量名 1,变量名2, ;7.设有下列运算符:、,其中优先级高的是_,优先级低的是_. 解对运算符、,按它们的优先级自高到低的顺序排列为:、所以,优先级高的是+,优先级低的是。9.设a 3,b= 2, c l , 则c b 的 值 为_., a b c 的值为 _. 解因a 的值为3,b 的值是2,条件ab 为真,其值为1.表达式ab c 的求值顺序是计算 ab,结果为1,接着计算1c,因c 的值为 1,条件1c 为假,结果为0. 10.已知a10,b 20,则表达式!a b 的值为_. 解计算表达式!ab,先计算! a ,因a 的值为10, ! a 的
19、值为0.关系表达式020 为真,所以表达式!ab 的值为1. 11.设 x 和 y 均为 int 型变量,且xl,y 2,则表达式 1.0 xy 的值为 _. 解计算表达式 1.0 xy,先求 xy,因 x 和y 是整型变量,其中的除运算是整除,12 的结果为0.接着计算1.00,计算时,先将右分量转换成0.0,后得到结果1.0. 12.设整型变量x、y、z 均为 5:执 “x- y-x” 后, x_,执行 “x yz” 后, x=_. 执行“x( yz)? x2:x2,3,2 后,x_. 解在变量x、y、z 的值均为5 的情况下,计算各表达式。由于表达式x-yz 等价于表达式 xx( yz)
20、 ,所以计算后x 的值为5.表达式 x%=y z 等价于表达式xx%(yz) ,所以计算后x 的值也为5.表达式x( yz)? x2: x2,3,2 的计算过程用圆括号描述其计算顺序是:( (x=(y z)? x2:x2) ,3) ,2 即这是一个逗号运算表达式,由一个赋值表达式和两个数值构成,逗号表达式要求顺序求各子表达式的值。表达式x( y z)? x 2:x2 的计算是先求赋值号右边的条件表达式,因条件(y z)为假,求出x2 的值为3,将该值赋给变量 x,使x 的值为3. 13.能表述 “20 x 30 或 x -100” 的 C 语言表达式是 _. 解首先表述20 x30 的 C 表
21、达式可写成20 x x30.所以表述 “ 20 x30 或 x -100” 的 C 表达式为 20 x x 30|x -100. 14,请写出数学式x/y*z 的 C 语言表达式_. 解数学式子表述的是x 除以y 乘 z 的积,写成C 表达式可以写为x( y*z ) ,或可等价地写成xyz. 15.C 语言中运算结果可以当成逻辑值使用的表达式有: _表达式、 _.表达式、 _ 表达式、 _表达式、 _表达式、_表达式。解在C 语言中,逻辑判断以非0 值为真,以0 值为假。所以,几乎所有的表达式的运算结果都可以当成逻辑值使用,如算术表达式、关系表达式、逻辑表达式、赋值表达式、逗号表达式、条件表达
22、式等。第三章 C 程序结构3.1 单项选择题1.设 a3,b4 执行 “printf ( “ d, d , ( a,b) , (b,a) ) ;” 的输出是()3,4 4,3 3, 3 4, 4 解在调用格式输出函数的语句中,其中每个格式符对应一个输出项,格式符d 要求输出项内容以十进制整数形式输出。第一个输出项(a,b)是一个逗号表达式,该表达式的值是b 的值,输出 4.接着输出字符逗号。第二个输出项(b, a)名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4
23、页,共 13 页 - - - - - - - - - 学而不思则惘,思而不学则殆的值是a 的值,输出3.所以语句执行将输出4,3.正解的选择是。2.使用 “ scanf (” x=%f ,y%f“ , x,&y )” ,要使x,y 均为1.25,正确的输入是()1.25,1.25 1.25 1.25 x1.25,y1.25 X1.25 y1.25 解格式输入函数的格式字符串中的字符可以分成三类:空格类字符、其它普通字符和格式转换说明。其中空格类字符用来跳过一个空格类字符序列,直至下一个非空格类字符。普通字符要求输入字符与其完全相同。格式转换说明对输入字符列按格式转换说明进行转换,得到内部值存储
24、到对应输入项所指定的存储位置中。函数调用scanf(“x %f,y=%f , x,&y)以普通字符 x=开头,输入时也要先输入x。接着是一个浮点数输入格式,所有能构成一个浮点数1.25 的字符序列都能满足要求。接着是普通字符列” ,y “ ,在输入的浮点数之后也要有字符列” ,y“ 。后又是浮点数输入格式,同样所有能构成一个浮点数1.25 的字符序列都能满足要求。问题给出的供选择答案中只有x=1.25,y1.25 是能满足上述要求的。所以正确选择是。答是。4.设a, b 为字符型变量,执行“scanf(”a%c, b %c “,&a ,&b)” 后使a 为 A,b 为B,从键盘上的正确输入是(
25、)A“B A,B AA, BB a=A, bB 解函数调用scanf(“c%c,b%c ”,&c,&b )中,普通字符必须按格式字符串要求照原样输入, c 格式对紧接的任何字符都输入。所以实现问题的要求,输入字符列应为“aA,bB” 。另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。但用字符格式输入字符时,在要输入字符前后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。正确的解答是。和逻辑或构成的逻辑表达式有特别的计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑表达式的结果时,就立即结束逻辑表达式的计算,不再计算后继逻辑子表达式。本题的逻辑表达式是两个运算分量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言经典习题及其答案详解 2022 语言 经典 习题 及其 答案 详解
限制150内