十进制转换为二进制
代码如下:很奇怪代码的运行结果,就比如输入"12",结果却是“1110”,是哪里出问题了呀【捂脸】
#include<stdio.h>
void dec2bin(int m)
{
int bin,j;
for(j=0;m!=0;j++)
{
bin=m%2;
m=m/2;
}
for(;j!=0;j--)
printf("%d",bin);
}
int main()
{
int n;
scanf("%d",&n);
dec2bin(n);
return 0;
} #include<stdio.h>
void dec2bin(int m)
{
int bin,j;
for(j=0;m!=0;j++)
{
bin=m%2;
m=m/2;
}
for(--j;j>=0;j--)
printf("%d",bin);
}
int main()
{
int n;
scanf("%d",&n);
dec2bin(n);
return 0;
}
人造人 发表于 2020-5-4 21:13
可以了!!好厉害!! 逻辑:
2作为const来求模,得到任意数是否可以整除,如果能整除,求模结果则为0,如果不能整除,求模结果则为余数,因为除数为2,所以任意数除以2,余数只能为几呢?
突然发现这个问题好难,就去翻书,请教小学生,发现如下:2分之0。。。。到2分之n。
0/2=0*1/2 =0 0乘以任意数得0,所以0/2没有余数,求模结果为0。
1/2=1*1/2 =0.5=1/2 1乘以任意数得任意数,1/2是0.5由于是int类型,所以结果为0,但这里是求模,有余数为0.5,所以没有被整除,结果不足1,需要上机实验,证实求模结果为0还是为1。
2/2=2*1/2=2/2=1 2除以2可以整除,结果为1,已整除,没有余数,所以求模结果为0
3/2=3*1/2=3/2=1.5 没有被整除,模为1
4....为0
5....为1
6....为0
....
直到n
n/2=n*1/2
综上所述,依次类推,得出如果n的尾数是一个偶数,那么必定可以被2整除,所以没有余数,所以模结果为0
奇数的话,除法结果为0.5或者1.xxxx
总之,有余数,且余数结果为不足1或2以内的余数:
0.5和1.xxxx
所以作为int,以上两种情况,其商的结果,只有0.5需要上机证实外,其他结果,只能为1,小球部分被四舍五入还是直接抛弃需要上机实验。
所以,正是奇数可以被 二进制的权评论数 整除吗?
不能的话,余数是多少呢,综上所述,余数是介于0-1.xxx之间。求模的本质是得到余数,int不能带有小数,float可以带有小数。 howzyao 发表于 2020-5-5 07:26
逻辑:
2作为const来求模,得到任意数是否可以整除,如果能整除,求模结果则为0,如果不能整除,求模结果则 ...
受教了,谢谢!!{:10_287:} 厉害了 后来我老师看了我原来写的代码说,因为上一个循环结束时对应的j数组元素没有存放值,0--j-1对应的数组元素存放值了,第二个循环做了次j-1,就正正好了{:10_329:}
页:
[1]