c语言中二进制用什么字母表示方法,c语言中且用什么符号表示

1、变量a值是256,按十六进制输出结果是:100

2、结果是:46 ,由于输入的两个变量x,y,因为输入格式的限制“%2d%2ld”,前一个格式%2d,限制只能输入2位整型数据,后一个格式%2ld,限制只能输入2位长整型数据。当输入为1234567时,程序分别取x值为12,y值为34,二者相加,所以结果为46。

3、C, 由于输入格式"%3.2f%2.1f"的限制,第一个输入值是3列,2位小数点,第二个数值是2列,1位小数点。因为输入时没有输入逗号,所以限制格式里面没有逗号的符合要求。

4、A,这句判断是错误的:if(x+y=z),关系运算的相等是==,直接改过来就OK了,你的想法if(x==y+z)也不错!

************************************************

你提的疑问有一个对,有一个错!

第三个问题,scanf函数在输入数据时,可以指定域宽,是整数,例如:scanf("%3f,%3d"),百分号后面的数字就是指定数据输入的宽度,如果超宽,系统会自动截断,小数点是分隔符,输入时必须有.根据问题的实际输入情况,所以正确答案是B,那些域宽带小数点的肯定不对,A是中间有小数点的分隔符,要求在输入时必须有的,因为实际没有输,所以也不对. 而我以前关于第三个问题所说的,当然也不对,是我太粗心了!

第四个问题,书上的答案肯定有问题,要不就是你写错了.因为这个条件判断表达式 if(x+y=z)不是一个关系运算,当然括号内也可以是赋值运算表达式,在C中,真与假的判断就是零与非零,非零为真,零为假.但是赋值运算也不能象x+y=z这样赋值的,所以肯定会编译出错,实际上,你可以把=号改为==,或者改为z=x+y也可以,你实际测试一下就知道了.所以答案应该是A.

关于整型的概念,你可以看下面的内容:

一、整型数说明

加上不同的修饰符, 整型数有以下几种类型;

signed short int 有符号短整型数说明。简写为short或int, 字长为2字节共16位二进制数, 数的范围是-32768~32767。

signed long int 有符号长整型数说明。简写为long, 字长为4字节共32位二进制数, 数的范围是-2147483648~2147483647。

unsigned short int 无符号短整型数说明。简写为unsigned int, 字长为2字节共16位二进制数, 数的范围是0~65535。

unsigned long int 无符号长整型数说明。简写为unsigned long, 字长为4字节共32位二进制数, 数的范围是0~4294967295。

二、整型变量定义

可以用下列语句定义整型变量

int a, b; /*a、b被定义为有符号短整型变量*/

unsigned long c; /*c被定义为无符号长整型变量*/

三、整型常数表示

按不同的进制区分, 整型常数有三种表示方法:

十进制数: 以非0开始的数

如:220, -560, 45900

八进制数: 以0开始的数

如:06; 0106, 05788

十六进制数:以0X或0x开始的数

如:0X0D, 0XFF, 0x4e

另外, 可在整型常数后添加一个"L"或"l"字母表示该数为长整型数, 如22L,0773L, 0Xae4l。

(1)0x100(十六进制数)

(2)x=12,y=34 x+y=46,scanf中的%2d表示读取2位整型数,%2ld表示读取2位长整型数

(3)C(同上,自己参考scanf格式,看看格式字符串怎么定义)

(4)当然不可能通过编译,因为if语句里不是逻辑表达式。选A。所以为了在编译时期检查出错误,判断语句最好写成if(x+y==z)而不是if(z=x+y)

1、

256/16=16……0

16/16=1……0

输出结果是100(不带前面的0x)

2、

虽然C标准没具体规定整型各类型数据所占内存字节数,只要求long型不短于int型,short型不长于int型。

但是ANSI标准定义的整型类型里,基本整型int和长整型long的长度不同。int是16位,long是32位。

考试一般按ANSI标准定义的规则。Turbo C也是这样。

你这道题因为限定了两个输入数据所占的列数都为2,所以格式指定为%d还是%ld没有区别。

但没有指定列数、且后面的变量也是相应类型的话就有区别了。

比如:

int x;

scanf("%d",&x);

printf("%d",x);

long y;

scanf("%ld",&y);

printf("%ld",y);

你同样输入32768的话,第一段代码,由于x是int型,最大值是32767,造成值的溢出,输出结果是-32768;第二段代码,y是long型,32768这个数值没有超过long的范围,输出的结果仍是32768。

3、输入数据时可以指定输入数据所占的列数,但不能规定精度。

写成scanf("%3f%2f",&f1,&f2);可以,如果你输入4.52,系统自动截取4.5放到f1里,把2放到f2里。

但是像选项C这样是不合法的。

D就更不对了。A的话必须输入4.52,3.5回车。

B是对的。

4、这题我觉得答案错了。或者题出错了。

要是if(x=y)或者if(x=y+z)这样的话,其实是没错的,不见得括号里必须是==连接的关系运算式。if(x=y+z)相当于把y+z的值赋给x,再判断x是否大于0,如果大于0,执行if的,否则执行else的。

现在if括号里的式子按照运算符优先级结合成(x+y)=z,z无法给x+y赋值吧。。我用VC试验了,编译有个error。难不成TC能通过??

==============

哦,忘了二,八,十六进制转化为十进制数这个了。

原来是二进制数就以2为底数,八进制以8为底数,十六进制以16为底数。

从右边一位起,以0、1、2、3……作为指数。

再以各位上实际的数值作为系数。

列出一个加法算式,结果就是十进制数数值。

嗯,用书上的例子好了:

八进制整数:以0开头的数是八进制数。如0123,其值为1*8²+2*8¹+3*8º=64+16+3=83

十六进制整数:以0x开头的数是十六进制数。如0x123,其值为1*16²+2*16¹+3*16º=256+32+3=291

二进制,有符号数和无符号数稍微有点不一样,最好你找本书好好看看。

==============

啊!平方的符号复制过来还是好好的,显示出来就不是那么回事了。。

²是2次方

¹是1次方

º是0次方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值