第2章习题与答案.docx
- 文档编号:11346489
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:20
- 大小:132.68KB
第2章习题与答案.docx
《第2章习题与答案.docx》由会员分享,可在线阅读,更多相关《第2章习题与答案.docx(20页珍藏版)》请在冰豆网上搜索。
第2章习题与答案
一.选择题。
1.下列是用户自定义标识符的是
A)_w1B)3_xyC)intD)LINE-3
答案:
A
解析:
C语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项B),D)是错的;此外,C语言不允许用户将关键字作为
标识符,而选项C)选项项中的int是C语言的关键字。
2.C语言中最简单的数据类型包括
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)字符型、实型、逻辑型
答案:
B
解析:
本题考查C语言的数据类型。
在C语言中,没有专门的逻辑型数据类型,可以用0和1来表示逻辑值。
所以,在本题的选择答案中,不应该包括逻辑型。
)。
B.#definePI3.14;
D.definePI3.14;
3.下列符号常量定义中正确的是(
A.#definePI3.14
C.definePI3.14
答案:
A
解析:
用#define
现PI的地方用3.14
3.14后加了“;”号,就不是常量了,故只有
4.以下选项中不正确的实型常量是
A)1.607E-1B)0.7204eC)-77.77D)234e-2
答案:
B
解析:
实型常量表示时字母E或e前必须有数字,其后数字必需为整数,故B错。
5.若变量已正确定义并赋值,以下符合C语言语法的表达式是
A)a:
=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
答案:
B
”;选项C)应改为(int)18.5%3;
C语言规定
B),它
解析:
选项A)中包含一个不合法的运算符“
选项D)可理解为两个表达式:
a+7=c+b和a=a+7,其中第一个是错的,因为赋值号的左边只能是单个变量,不能是表达式或常量等。
因此,正确答案是选项实际上相当于a=(b=c+2),进而可分解为两个表达式:
b=c+2和a=b。
6.下列可用于C语言用户标识符的一组是
A)void,define,WORDB)a3_b3,_123,Car
C)For,-abc,IFCaseD)2a,DO,sizeof
答案:
B
C语言的关键
解析:
C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,排除选项C和D)。
C语言中还规定标识符不能为
A)。
字,而选项A)中void为关键字,故排除选项
7.C语言中运算对象必须是整型的运算符是
A)
)<=
%=B)/C)=
答案:
A
解析:
C语言规定:
取余运算符的运算对象必须是整型,运算,它的运算对象也必须是整型。
8.
已正确定义,且i已正确赋值,合法的语句是
B)++i;C)a=a++=5;D
若变量a,i
A)a==1
答案:
B
解析:
选项合法的运算符“
9.设X,y和Z都是int型变量,且x=3,y=4,
是
A)x&&yB)x<=yC)x||++y&&y-zD)!
(x z||1) 答案: D 解析: 该题考查逻辑与“&&和逻辑或“||”以及逻辑非“! ”符号的用法。 选项 的值为 1,因 A)即3&&4为真,选项B)即3<=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x 真,此时选项C)变为1&&-1为真。 选项D)不用计算,括号内逻辑或右边的值为而括号内的值为1,再进行逻辑非运算得0。 10.有以下程序 main() {inti=1,j=1,k=2; if((j++||k++)&&i++) printf("%d,%d,%d\n",i,j,k); } 执行后输出结果是 A)1,1,2B)2,2,1C)2,2,2D)2,2,3 答案: C 运算 解析: 该题目的关键是要搞清楚“&&'和“||”两个逻辑运算符的运算功能。 符“&&和“||”是双目运算符,要求有两个运算量。 且规定逻辑与运算中,只有前面运算量的值为真时,才需要判别后面的值。 只要前面为假,就不必判别后面的值。 而逻辑或则为只要前为真,就不必判别后面的值;只有前为假,才判别后。 本题中j++值为 真,不进行k++的运算,所以k的值保持不变。 11.设intx=1,y=1;表达式(! x||y--)的值是 A)0B)1C)2D)-1 答案: B 解析: C语言规定的运算优先级由高到低分别是逻辑非、算术运算、逻辑或。 所以先计算! x,值是0,然后再计算y--,由于是后缀运算符,所以y在本次运算中的值仍然是1,最后计算0||1,值为1。 12. 若有说明语句: A)包含1个字符 C)包含3个字符 答案: A 允许用一种特殊形式的字符常量,就是以一个“” ASCII码(八进制数)表示一个字符,本题中的char c的ASCII码值。 解析: C语言的字符型常量中,开头的字符。 其中“\ddd”表示用c='\72’即表示占一个字符的变量 13.在C语言中,退格符是 \n \t \f\b A) B) C) D) 答案: D 解析: C语言的转义字符见下表所示。 转义字 符 转义字符的意义 \n 回车换行 \t 横向跳到下一制表位置 \v 竖向跳格 \b 退格 \r 回车 \f 换页 \\ 反斜线符“\” \' 单引号符 14.在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,“假”。 在求逻辑值时,用()表示逻辑表达式值为“真”, 式值为“假”。 A)10B)01C)非0非0D)11 答案: A 解析: 在C程序中,判断逻辑值时,用非0表示真,用 时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假, 15.字符型数据在机器中是用 A)10100011和01110111 C)00110101和00110111答案: C ASCII码表示的,字符“5” B D 又用“0”表示逻辑值又用()表示逻辑表达 0表示假。 逻辑表达式计算 则用0表示。 和“7”在机器中表示为 )01000101和01100011 )01100101和01100111 解析: 为便于表示各种数据类型,机器中采用了BCD码(表示十进制数)、ASCII码(字符型)、汉字机内码等等各种码。 数据采用了补码、原码和反码为表示形式。 实型数据表示方法有浮点法和定点法等,考生需熟练掌握各种码的含义,并用之来计算、比较。 需要提出的是,在机器内部,所有码都是由二进制编码而成的,它都是以二进制存储在机器之中的。 字符“5”和“7”的ASCII的值分别为53和55,其二进制形式分别为00110101和00110111。 16.若已定义: inta=25,b=14,c=19;以下三目运算符(? : ("***a=%d,b=%d,c=%d\ a,b,c);程序输出的结果是 B) ) a<=25&&b--<=2&&c? printf (”###a=%d,b=%d,c=%d\n", A)***a=25,b=13,c=19 C)###a=25,b=13,c=19 答案: C 解析: 此题综合考查多种运算符的使用; ***a=26,b=14,c=19###a=26,b=14,c=19 首先计算表达式 )所构成语句的执行后 n",a,b,c): printf a<=25&&b--<=2&&C的 值,很容易看出b--<=2的值为假,因此表达式为假;根据三目运算的特点,由于前面的表达式为假,应执行printf(“###a=%d,b=%d,c=%d\n”,a,b,c),应注意a的值依然为25,b的值经过 17.若有定义: 值是 A)2.500000 答案: b--运算后改变为13,而C的值仍为19。 inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的 B)2.750000C)3.500000D)0.000000 7。 a%3的值为1,1*7 解析: x+y的值为实型7.200000,经强制类型转化成整型 的值为乙7%2值为1。 1/4的值为0,而非0.25,因而为两个整数相除的结果为整数,舍去小数部分。 与实型x相加,最终得结果为 18.有如下程序段 inta=14,b=15,x;charc=‘A; x=(a&&b)&&(c<‘B'); 执行该程序段后,X的值为 A)tureB)falseC)0D)1 答案: D 解析: 在C语言中,逻辑运算符有4个, &&(逻辑与)、人(异或)。 在位运算里面还有& 2.500000。 它们分别是: (位与)、 B') c<' 逻辑与运算符的用法,在表达式x=(a&&b)&&(c<' 辑与条件的两边都要保证为1,即a和b都成立,当然 式的值为1。 19.在以下一组运算符中,优先级最高的运算符是 A)<=B)=C)%D)&& 答案: C 解析: 关系运算符、逻辑与和算术运算符总算术运算符的优先级最高,故选 ! (逻辑非)、II(逻辑或)、|(位或)的运算。 本题考查冲,先判断a&&b条件,逻B'是成立的,显然,该表达 等价于k=k+(n+1)。 B {intx,y,z;x=0,y=x+1; z=x+y;} 20.以下选项中,与k=n++完全等价的表达式是 A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1答案: A 解析: k=n++的意思是先将n的值赋给k,然后n的值再加1,选项A)符合题意;选项C)是先使n的值加1,然后再赋值给k;选项D) 21.以下选项错误的是 )main() A)main() {intx,y,z; x=0;y=x-1; z=x+y;} 式,选项B)中是x=0,y=x+1;在选项C)中是y=x+1,z=x+y;所以B)和C)中也没有错误。 选项D)中的最后一条语句是以逗号结束的,而C语言中不能用逗号作为一个语句的结 束标志,每一条语句最后应该是分号,所以D)选项中的程序是错误的。 22.以下4个选项中,不能看做一条语句的是 A); 答案: 解析: 23.下列运算符中优先级最高的是 A) = 答案: B 24.判断char型变量ch是否为大写字母的正确表达式是 A)'A'<=CH<='Z'B)(CH>='A')&(CH<='Z') C)(CH>='A')&&(CH<='Z')D)('A'<=ch)AND('Z'>=ch) 答案: C 25.设inta=12,则执行完语句a+=a-=a*a后,a的值是 A)552B)264C)144D)-264 答案: D 26. 执行 设a=5,b=6,c=7,d=8,m=2,n=2, (m=a>b)&&(n=c>b)后n的值为 A)1B)2C)3D)4 答案: B 27. o 只能是0或非0正数可以是任何类型的数据 逻辑运算符两侧运算对象的数据类型 A)只能是0或1B) C)只能是整型或字符型数据D) 答案: D 28. "的表 正确表示”当x的取值在[1,10: 或[200,210]范围内为真,否则为假达式是 A)(X>=1)&&(X<=10)&&(X>=200)&&(X<=210) B)(X>=1)||(X<=10)||(X>=200)||(X<=210) C)(X>=1)&&(X>=10)||(X>=200)&&(X<=210) D)(X>=1)||(X<=10)&&(X>=200)||(X<=210)答案: C 29.设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 C)xIIy+z&&y-zD)! ((x z||1) A)'x'&&'y'B)x<=y 答案: D 30. 则表达式x=y&&chv'B'&&! y的值是 C)1D)"假" 已知x=43,ch='A',y=0; A)0B)语法错 答案: A 31.若希望当A的值为奇数时,表达式的值为”真"OA的值为偶数时,表达式的值为”假”。 则以下不能满足要求的表达式是 A)"ABC"B)"W\"C)"SDF/3"D)"”答案: B 35.若变量a是int类型,执行语句: a='A'+1.6;后,正确的叙述是( B.a的值是浮点型 D.a的值是字符'A'的ASCII值加上1 A.a的值是字符CC•不允许字符型和浮点型相加 答案: D 36. 则表达式w*x+z-y值的数据类型是 设有说明: charw;intx;floaty;double乙 A)intB)floatC)doubleD)char 答案: C 37.执行下列语句inta=3,b;b=-(--a);后a,b的值分别是. A)2和-2B)2和-3C)3和-2D)3和-3 答案: A 38.执行下列语句floatf=3.9;inta=4;f=(int)f+a;后f的值是__ A)7.9B)7.000000C)7.0D)出错 答案: B 39.执行下列语句intf=3,g,h;g=++f;g=f++;h=++g;后f和h的值是 A)5和5B)6和5C)5和6D)4和5答案: A 40.下列C语句格式错的是 : b=3;D)z=a+b; A)inta=10;B)inta,b,z;C)a=2答案: C 41.下列变量定义中合法的是 B)doubleb=1+5e2.5;D)float2_and=1-e-3; A)int_a=1-.e-1; C)longx=12.5; 案: C 42.以下符合C语言语法的实型常量。 A)1.3E0.5B)7E-2C)3.14159ED)E5 答案: B 43.以下符合C语言语法的赋值表达式。 A)d=8+e+f=d+aB)8+e=f=dC)d=f=8+e++D)d=8+e++=d+7答案: C 44.假设整型变量a的值是1,b的值是2,c的值是3,在这种情况下执行下面的语句: u=(a==2)? b+a: c+a;执行该语句后整型变量u的值为()。 A)0B)3C)4D)5 答案: C 45. 类型,则下面与逻辑表达式! x等价的C语言关系表达式是 B)x! =1C)x==0D)x! =0 若x为int A)x==1 答案: C 设inta=3 A)a&&(a>0)B)! a||a 答案: C 47. 假定有以下变量定义: ;则能使值为3的表达式是o B)x%=(k-4%5)C)x%=k-k%5D)(x%=k)-(k%=5) intk=7,x=12 A)x%=(k%=5) 答案: D 设x和y均为 A)把x和y按从大到小排列B)把x和y按从小到大排列 C)无确定结果 答案: D 49. 下面能正确表示 A)x>0答案: C 50. 以下所列的( A)0xFF答案: C 二.填空题。 1. 用关键字float定义单精度实型 在C语言中用关键字【1】定义整型类型变量, 变量,用关键字double定义双精度实型变量。 答案: 【1】int 解析: C语言中规定用关键字int定义整型变量。 2.3.5+1/2的计算结果是【2】 答案: 【2】3.5 解析: 1/2的值为0,故3.5+1/2的值为3.5。 3.设y是int型,请写出y为奇数的关系表达式 答案: 【3】(y%2)==1或(y%2)! =0 4.设inta=5,b=6,表达式(++a==b--)? ++a: --b的值是【4】。 答案: 【4】7 解析: 此表达式为三目运算符,++a的值为6,b――的值为6,则整个表达式的 值为++a的值,++a的值为7。 请注意前缀++,--和后缀++,--的区别。 5.以下程序的输出结果是【_51。 inta=1234; ("%2cKn",a); 【5】1234 在%与格式符之间插入一个整形数来指这输出宽度, printf 答案: 并不影响数据的完整性, 解析: 当插入的宽度小于实际的宽度时,则实际的宽度输出。 6.以下程序的输出结果是【6】。 main() {inta=0; a+=(a=8); ("%dKn",a);} 【6】16 赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式 printf 答案: 解析: 逐步进行求解: a+=(a=8)此时,a的值由于赋值为8,而不是0 a+=8 a=a+8 a=16 7.在计算机中,字符的比较是对它们的【7】进行比较。 ASCII码值进行的。 乂要占用【8】个字节。 每个字符用占用1个字节, 答案: ASCII码 解析: 【7】C语言中,字符也可以进行比较运算,且是按照 8.在内存中,存储字符’x'要占用1个字节,存储字符串〃 答案: 【8】2 解析: 计算机存储一个字符用1个字节,存储字符串时, 另在字符串的有效字符之后存储1个字符串的结束标记符。 所以存储字符串“X”要占用 2个字节,存储字符’X'只要1个字节。 9.以下程序的运行结果是【9】。 main() { intm=5; m++; printf("%d\n",m--); } 答案: 【9】6 10.设有intx=8;则表达式(++x*1/3)的值是【10】。 答案: 【10】3 11.设x,y,z和k都是int型变量,则执行表达式: x=(y=4,z=16,k=32)后,x的值为【11】。 答案: 【11】32 12. unsignedint类型数据的取值范围是【12】 设int类型的数据长度为2个字节,则 答案: 【12】0至65535 13.执行以下语句后b的值为【13】。 inta,b,c;a=b=c=1;++a||++b&&++c; 答案: 【13】1 14. 设intx=2,y=1; 答案: 【14】1 15. a>b? a: c>d? c: d值为【15】。 设inta=5,b=2,c=3,d=4;则表达式 答案: 【15】5 16.若有以下程序段, intc1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3的值是【16】。 答案: 【16】0 17.有程序: main() { inty=3,x=3,z=1; printf("%d%d\n",(++x,y++),z+2); } 17】。 运行该程序的输出结果是【 答案: 【17】33 18.能正确表示逻辑关系: "a>5或aw-1"的C语言表达式是【18】。 答案: 【18】a>=5||a<=-1 19.执行下面程序段: inta=10,b=9,c; c=(a-=(b-5)); c=(a%11)+(b=3); 则变量C的值是【19】。 答案: 【19】9 20.假定W、x、y、z、m均为整型变量,且w=1,x=2,y=3,z=4则执行语句: m=(w w: x; m=(m m: y;m=(m m: z;后,m的值是【20】。 答案: 【20】1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 答案