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

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 运算符的计算先后顺序,比如逻辑运算符,算术运算符等,先算哪个?

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可能在代码中更容易让人理解

追问

2题 D ch=’\’,不是“\'”,单引号里面只有斜线。答案C ch=’\108’ 不是可以代表一个字母 吗? 如果你认为D正确,那么该如何解释B? 谢谢了

追答

D错了啊,我没认为D正确
B是正确的,在字符或者字符串中,有些特殊字符是需要用转义字符表示的
比如\" 表示"字符, \'表示'字符,D中\'被解释为',这样就还需要一个'来构成一个字符,但后续却没有',所以编译器报错
C中 如果编译器将108解释为十进制的整数的话,那么C是完全正确的,但一般编译器都将\后的数字解释为16进制的,所以可能会报warning,但不会报error
B中实际是将ASCII编号为0xff的字符赋值给ch,但在标准ASCII中是没有编号为255的字符的,不过在扩展ASCII中存在0xff的字符,所以编译器可能报warning,也可能直接通过编译

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-08
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
第2个回答  2011-08-08
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.先算术运算符,后逻辑运算符
第3个回答  2011-08-08
B C C 1 ( 2.5 还要你想数出什么格式了) 6题不知道你说什么 1 先算!= 再算=这个赋值运算符
没有一定的 他们穿插了 逻辑运算符当中!=优先所有算数运算符 &&和||优先级在算数运算符后面
不知道对不对 仅供参考
第4个回答  2011-08-10
以下结果均经过编译调试以确保准确性
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

逗号运算符
(顺序求值运算符)

自左至右

C二级语言题目 跪求详解 答案 还能追加分数 谢谢!!
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*(...

c语言sin程序(好答案追加分数)
函数sin()的输入的精度足够高,要不假设它的精度才精确到小数点后2位,你想要4位的就不行的.实际其精确度也是有限的.输出的双精度,你可以强制转化,如:int n;n=(int)(sin(x));这样不是可以变成int了.但这样似乎没用,不是0就是1了.当然了,x也可以是整数.计算时,系统自动进行将x转为双精度...

计算机电路基础的题目,急求!!!回答得好追加悬赏分数!!
回答:只想说如果用C语言简单多了,数电学的不好,忘记的差不多了

计算机等级考试二级C语言中那道程序设计题的评分标准是什么
计算机二级C语言题型和评分标准:1、选择题:40题,每题1分。按标答给分 2、程序填空:3处空,每空6分。共18分,按标答给分,如果和标答的写法不一样,就算对的也没有分。每一空有每一空的分数。做对一空就给6分 3、程序改错:2处错误,每处9分,共18分。都是\/*found*\/下面的一行有错误...

数值分析用C语言实现,如果答案正确追加分数~~
程序语言:Dim d As Double d = b ^ 2 - 4 * a * c If d < 0 Then MsgBox "Δ小于0,没有实根", , "消息"x(0) = 0: x(1) = 0 ElseIf d = 0 Then x(0) = -b \/ (2 * a): x(1) = x(0)Else x(0) = (-b - Sgn(b) * Sqr(d)) \/ (2 * a): x(1...

c语言编程 一个数字一个数字输入,整理后出!追加分数!
将数字以字符串的形式输入就可以处理了,代码如下:include<stdio.h> include<string.h> include<windows.h> int main(){ char s[10];scanf("%s",s);for(int i=0;i<strlen(s);i++)printf("%c",s[i]);printf("\\n");system("pause");return 0;} ...

回答好的绝对会再追加分数! a={0,2,4,6,8} b={0,1,2,3,4,5}c={4,5...
②∪代表并集,即集合中有的有的元素都要写上去,不能重复。所以a∪b∪c={0,1,2,3,4,5,6,8} ③有括号就先算括号里面(a∩b)={0,2,4},再用这个集合∪c,所以就={0,2,4,5,6} ④同③一样的道理,(a∪b)={0,1,2,3,4,5,6,8},再∩c={4,5,6} ...

C语言编写一个程序,急用!!高分悬赏(正确答案追加分数)
printf("===十道题目回答如下===\\n\\n");for(int j = 0; j < 10; j++){ printf("%d + %d = %d\\t", plu[j][0], plu[j][1], plu[j][2]);if(plu[j][2] != plu[j][3])printf("(正确答案为%d)", plu[j][3]);printf("\\n");} printf("输入任意键返回主菜单\\...

计算机等级考试二级c语言上机题是不是出现0错0警告就可以得分啊?_百度...
不一定的,没有错误和警告只是说明你的语法上没问题了,具体能不能得到分数,需要测试完后看结果是否与要求的一致。

...段的代码后面帮我做个注释!我会追加分数的!谢谢!
setcolor(0x0c);\/\/设定背景颜色黑色,图像红色 line(x1,y1,x2,y2);\/\/画出l code1=encode(x1,y1);code2=encode(x2,y2);\/\/判定两点位\/\/置 if((code1&code2)!=0) return;\/\/如果两点位于区域外,且\/\/在同侧,返回 else if((code1|code2)==0)\/\/如果编码按位相或等于0,即 {\/\/...

相似回答