几道C语言的入门问题,给过程,在线等

1.下面不属于C语言整形常量的是()

A.01 B.0x1 C.08 D.8
2.在Visual C++6.0中,表示单精度的数是()
A. 2004.04 B. 2004.04f C. 2.00404e3 D. 0.200404e4
3.表达式0x14&0x18的值用16进制表示为_______.
4.测试char型变量b左边第5位是否为1的表达式是_______

5.当从键盘输入20 35时,输出的结果是_______

#include<stdio.h>
void main()
{
unsigned char a,b;
scanf("%x %x",&a,&b);
printf("%x",a&b);
}

1、C
A选项表示8进制的1;
B选项表示十六进制的1;
C选项错误,0开头的表示八进制的整数常量,范围是0-7,08显然超过了8进制的表示范围;
D选项表示十进制的8;

2、B
f表示单精度,不写的话默认都是双精度;

3、0X10;
两个十六进制的数进行按位与运算,首先把两个十六进制数化成二进制OX14:0010 0000
OX18:0011 0101,然后进行按位与,相同得1,不同得0
0010 0000
& 0011 0101
--------------
=0010 0000 把它化成十六进制就是OX10;所以答案是10;

4、(b>>3)&1=1就是1,如果=0就是0;
char是一个字节 8位 表示成xxxx 1xxx(假设左边起第五位是1),那么右移三位后,原来的第五位就是现在的最后一位了,和1进行按位与
XXXX XXX1
&0000 0001 结果就很明显了,如果第五位是1,结果就是1,否则为0;

5、0X10;
你输入的是十进制的20,35,但是你要先把他们转化成十六进制,在转化成二进制进行按位与运算,20->0XE->0000 1110(2);35->0x23->0010 1011(2)
0000 1110
& 0010 1011
——————

0000 0010 这就表示的十六进制的0X10 ;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-22
C,以0开头是八进制,
D单精度有效位数是前七位,当然不包括小数点,但是小数点后面默认保留6位小数,如果不够6位用0填充。
ox10,&是个 位与运算符号
0x14&0x18 就是 0001 0100
& 0001 1000
--------------
= 0001 0000
确定 第5位是否为1只要与0x10进行位与
b&0x10 结果是1第5位就是 1否则为0
同样16进制的 20 35
0010 0000
&0011 0101
--------------
=0010 0000
ox10
第2个回答  2013-07-26

    C

    B

    0X10

    b&10000<<4==1

    0x10

解释:第五题,

20,35二进制分别为

1100

&

1011 =

———

1000=0x10

第3个回答  2013-07-22
1.C
2.B
3.10
4.b<<4>>7==1
5.20追问

为什么额

第4个回答  2013-07-22
1.C 0开头表示8进制后边的数应该是0-7
2.B f表示单精度,不写的话默认都是双精度
3.0x10 按位与
4.(b>>3)&0x1 == 1 确认b的bit3是否为1
5.20 %x把20,35当做16进制读取,读取后按位与,即0x20&0x35,然后以16进制输出结果追问

第四题答案是b&0x10
第五题怎么分析额20 和35分别转化为010000和110101(32位吗?)然后按位与放入到10000,化为16进制=10 额···无语了

追答

4.我看错了吗?怎么确认称第3位了?
要是要求的是验证第5位的话 你那个答案是可以的
b&0x10的意思就是: b按位与0001 0000 。如果B的第五位是1,那么运算结果就是0001 0000,如果第五位是0,运算结果就是0.
5. %x把 20,35当做16进制数读取,即0x20,0x35。0x20和0x35按位与,即0010 0000 & 0011 0101,结果是0010 0000即0x20, 再以16进制格式输出 就是输出20了。

第5个回答  2013-07-22
B。。。。D。。。。0x10。。。。b%32。。。。0x37。。。。
相似回答