C二级语言题目 跪求详解 答案 还能追加分数 谢谢!!

1已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是A.枚举常量MINUS的值为6B.... 1 已知枚举类型定义语句为: enum Token{ NAME,NUMBER,PLUS=5,MINUS,PRINT=10}; 则下列叙述中错误的是 A. 枚举常量MINUS的值为6        B. 枚举常量PRINT的值为10
C. 枚举常量NUMBER的值为1 D. 枚举常量NAME的值为1
2 有定义:char ch;,正确的赋值语句是;
A ch=’123’ B ch=’\xff’ C ch=’\108’ D ch=’\’
3 判断char型变量c1是否为小写字符的最简单切正确的表达试( ).
a.'a'<=c1<='z' b.(c1<=a)&&(c1<=z)
c.('a'<=c1)&&('z'>=c1) d.(c1>='a')&&(c1<='z')
4 若int a=1,b=2;则a|b=
5 已知float x=2.5,y=4.7;int a=7;则算术表达式x+a%3*(int)(x+y)%2/4的值为多少?6 假设m是一个3位数,从左到右依次用a、b、c表示各位的数字,则从左到右各位数字是b、a、c的3位数表达式是
7 int x,y,z;
X=2,y=4,z=7;
X=y--<=x||x=y!=z;
X的结果是多少? 另:x=y!=z;怎么算?
8 运算符的计算先后顺序,比如逻辑运算符,算术运算符等,先算哪个?
展开
 我来答
memberwin
2011-08-08 · TA获得超过3903个赞
知道大有可为答主
回答量:1000
采纳率:100%
帮助的人:501万
展开全部
1,D, enum中声明的变量除非指定值洞空兄,否则从0开始,每个加1,所以Token中的值为
NAME = 0, NUMBER = 1, PLUS=5,MINUS = 6, PRINT=10
2,B, ch被声明为char,所以应该用字符赋值
'123'本身就是一种错误的数据,''扩起纳袭来的是字符,但123是多个字符,可以认为是字符串
'\xff'表示转义字符,正确, '\108'实际也被解释为转义字符但0x108超过char的范围了,D中'\'要被解释为转义字符,但没有后续的内容
3,C和D都对, 主要就是用c1和'a'、'z'两个字符比较
4. 答案为3, a= 1;b= 2= 10(二进制) a|b = 1|10=11(二进制) = 3
5,答案为2.5, x+a%3*(int)(x+y)%2/4 = x + (a%3)*((int)(x+y))%2/4 = x+ 1*7%2/4= x+ 1/4 = x
6, 答案为100*((m-100*(m/100))/亏缺10) + 10*(m/100) + m%10用m表示的,用abc的太简单了
a= m/100, b = (m-m/100 *100)/10, c= m%10, 所以新数为100*b +10*a +c = 100*(m-10*(m/100)) + 10*(m/100) + m%10, 表达式中10和100不可约分
7,编译报错, 原因是赋值操作符'='优先级最低,右边的'='的左值不是变量,
改成X=y--<=x||(x=y!=z);后可以通过编译,且结果为1
X=y--<=x||(x=y!=z);等价于
x=(y--<=x)||(x=(y!=z))等价于
tmp = y--<x; tmp = 4<2 = 0;
x=(y!=z); x= (4!=7) = 1
x= tmp||x x = 0||1 = 1
所以x = 1
x=y!=z;等价于 x=(y!=z) = (4!=7) = 1
8, 具体看运算符优先级表,不过基本上都是:算术运算符比逻辑运算符优先级高,赋值运算符优先级最低
更多追问追答
追问
谢谢你的回答,我想说明一下,参考书中2题的答案是D,请再思考一下,我不太清楚
3题答案也是只有C,请再详细说明
1题枚举变量是怎么回事?谢谢
追答
2,D肯定错了,因为编译器将“\'”解释为',即转义字符“'”,然后编译器还期待一个“'”以与之前"\"前面的“'”配对,但之后却没数据了,所以编译报错,可以编译下试试
其实B和C严格来说都越界了,因为 B实际为255,一般的char的范围是-128~127的,但编译器不会报错,也不会报warning, C的值则超过了255,编译器不会报错,但会报warning,所以还是B更靠谱一点,同时在扩展的ASCII码中,char可以达到255,所以总的来说还是B更合适一些

3,CD都是正确的,当然需要你帮忙确认下,网页上写的跟书上写的是不是完全一样?CD两个表达式的意义完全等价,不过总的来说写成C更保险一点,以避免因为漏写某个符号造成赋值语句。

枚举变量实际就是一次声明多个常量,然后声明的常量中如果没有赋值,则所有常量从0开始递增,比如声明enum days{MON, TUE, WES};其中各个量都没有赋值,则MON=0,从0开始,TUE=1, WES=2;
若声明enum days{MON=1, TUE, WES}; 则MON=1,已经有赋值, TUE=2, WES=3
若在中间赋值,如enum days{MON, TUE=5, WES};,则MON=0,从0开始,TUE=5,赋值,WES=6,未赋值,要比前一个大1
以上的enum变量中的各个成员其实就是常量,所以在第一个声明中MON和0是完全等价的,或者说MON就是一个为0的常量,MON与0的区别只在于MON可能在代码中更容易让人理解
瑞达小美
2024-11-27 广告
对于享受放宽政策地区的同学,有两种放宽方式,一种是学历放宽,一种是分数放宽。不同情况考取的证书不同:课程针对应试,精准学习。导学、精讲、真金题、冲刺各阶段相辅相成,直击考点。瑞达法考APP一站式学习,碎片时间也能充分利用。2016年瑞达教育... 点击进入详情页
本回答由瑞达小美提供
绿果信哀1s
2011-08-08 · TA获得超过2008个赞
知道小有建树答主
回答量:395
采纳率:0%
帮助的人:402万
展开全部
1、D, 枚举常量都是默认从0开始的,MINUS的值就是6,如果定义NAME=2,那陪卖么NUMBER=3,以此类推,指导有人为定义,芦物逗然后再从人为定义的那个往后加。
2、D,字符是用单引号的如'\','a',而其它选项都是字符串,需要用双引号如"123","\xff".
3、D, &&为与运算,用来表示且,c1又是char的类型,所以要用单引号,如同字符之间的比较。
4、3,|这个运算符是位运算,表示--位或,a=1,相当于01,b=2,相当于10,然而10和01逐位或,蚂孝得到11,然后化成十进制就是3.
5、2.5
6、abc/5-10a+100*(abc%10)
7、 1 x=y!=z 就是从左到右算,x=4,而y=7,x是不等于y的,于是x=y!=z这个表达式结果为1
8、按照先后顺序依次如下:http://wenku.baidu.com/view/eebca735f111f18583d05a0d.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9e36d1c
2011-08-08 · TA获得超过409个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:111万
展开全部
1.D枚举常量都是默认从0开始的
2.D 声明的ch是个字符。但姿慎其他三兆滑个选项都给赋值的是字符串。
3.D
4.3
5. 2.5
6. abc/5-10a+100*(abc%10)
7. 1 x=y!=z 就是从左到右算,x=4,而y=7,x是不等于y的,于是x=y!=z这个表达式结果为族册腊1
8.先算术运算符,后逻辑运算符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9e6d11eef
2011-08-08 · TA获得超过1173个赞
知道小有建树答主
回答量:723
采纳率:0%
帮助的人:298万
展开全部
B C C 1 ( 2.5 还要你想数出什么格式了) 6题不知道你说什么 1 先算!= 再算腊乱=这个赋值运算符
没有一定的 他们穿插了 逻辑运算符当中!=优先所有算数运算符 &&和||优先级在算数蚂差运闷局皮算符后面
不知道对不对 仅供参考
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zvzvzv88
2011-08-10
知道答主
回答量:14
采纳率:0%
帮助的人:7.8万
展开全部
以下结果均经过编译调试以确保准确性
1 D 默认枚举类型从0开始,以后每个+1,但是其间可枝配以赋值,后面的在赋值的基础上每位加
1,因此NAME=0,NUMBER=1,PLUS=5,MINUS=6,PRINT=10
2 B 字符的赋值,A中' '内只能有一个字符,123是3个字符,所以不正确,,'\'为转义字符,后
面要接具体内容,因此D不正确,'\'后接数字有两种表示,\000或者\xddd,分别为8位和16
位表示法,C为8位表示,因此不能出现8以上的数,因此不对。故答案为B
3 C a b格式都不正确,C和D都正确,但C的习惯更好一些,如果'<'或者'>'忘写了,C会报错,
而D不会,但是这里明显是有错误的,在判断 “==” 时这种写法的好处就比较突出了。
4 3 | 为按位或,二进制下 int型最低字节 1为00000001,2为00000010,按位或后为00000011
因此为3.
5 2.5 * / %三者优先级一样,从左至右计算,7%3=1, x+y=7.2 取int 为7,1*7 = 7, 7%2 = 1
因为之前运算都只有int型,所以并没有提升类型,故int型下1/4 = 0. 最后算 x+0 = 2.5
如果在/4之前强制转换成float或者double,岁简则1/4 = 0.25,结果则为2.75
6 (m/10%10)*100 + (m/100)*10 + m%10
int ans(int m)
{ int a,b,c
a = m/100; c = m%10; b = m/10%10;
return ( (m/10%10)*100 + (m/100)*10 + m%10 )
}
7 编译出错,赋值运算"="的优先级低,因此计算步骤为 (y--<=x) 为0,0||x,为1,y!=z为1,x=1=1报错。括号的优先级是凌驾于操作符的,因此如果写成,x = (y--<=x) || (x = y!=z)就通过了。赋值运算符优先级低于!=,因此表达式x=y!=z先计算y!=z,然后将结果赋值给x。
8 要看运算符优先级表,一般的,算术运算符>关系运算符>逻辑运算符>赋值运算符。
括号的优先级是最高的,所以在不确定的时候多用用括号就可以避免很多错误了。
贴过来点主要的优先级顺序
1
( )
[ ]
->
.
圆括号运算符
下标运算符
指向结构体成员运算符
结构体成员运算符

双目运算符
双目运算符
双目运算符

自左至右

2

~
++
--
-
(类型)


sizeof
逻辑非运算符
按位取反运算符
自增运算符
自减运算符
负号运算符
类型转换运算符
指针运算符
取地址运算符
求类型长度运算符
单目运算符
自右至左

3

/
%
乘法运算符
除法运算符
求余运算符
双目运算符
自左至右

4


加法运算符
减法运算符
双目运算符
自左至右

5
<<
>>
左移运算符
右移运算符
双目运算符
自左至右

6
<
<=
>
>=
关系运算符
双目运算符
自左至右

7
==
!=
判等运算符
判不等运算符
双目运算符
自左至右

8

按位与运算符
双目运算符
自左至右

9

按位异或运算符
双目运算符
自左至右

10
|
按位或运算符
双目运算符
自左至右

11
&&
逻辑与运算符
双目运算符
自左至右

12
||
逻辑或运算符
双目运算符
自左至右

13
?:
条件运算符
三目运算符
自右至左

14

+=
-=
*=
/=
%=
>>=
<<=
&=
^=
|=
赋值运算符
双目运算符
自右至左

15

逗号运算符
(顺序求值运乎搭裤算符)

自左至右
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式