void main()
{
int transfer(int x);
int x;
printf("请输入一个十进制数:");
scanf("%d", &x);
printf("转换成二进制数是:%d\n", transfer(x));
}
int transfer(int x)
{
int p = 1, y = 0, yushu;
while (1)
{
yushu = x % 2;
x /= 2;
y += yushu * p;
p *= 10;
if (x < 2)
{
y += x * p;
break;
}
}
return y;
}
关于此我有几点想不通:
1.根据此函数,最后输入3会变成11,那么如果我想让这个二进制变为8位的(即把11变成1100 0000,自动填充6个0),这样子在128以下的数字怎么自动填充合适的0。
2.return y这个意思是什么,是把y的值返回到transfer这个整型上来吗,return后面加的字符或者数字有没有什么通俗易懂的解释。
3.为什么要创建”int transfer(int x)“,为什么要用到函数调用,我直接把int transfer(int x)变成一个int F,不行吗?他的作用是什么呢?
还请各位能不吝赐教,尽量详细,谢谢各位~
1、首先补全八进制应该是要往前补全0,你可以写循环判断位数补全输出0.
2、2和3的问题我一起说。在main函数中写 int transfer(int x);是函数声明,他的作用是在编译阶段,告诉编译器我有这个函数,以免报错。如果你把函数的实现放在main前面就不用写。return y的功能和你函数是对应的。你函数写的int就必然要返回一个int型的数据。而返回的值是由你指定的。在该例子中就是x经过函数的一系列运算后返回y的值。
“3”变“11”,题主没搞清楚二进制,就算你要填充 也应该是 0000 0011 实现这样你可以试着开数组,每次把数组清零,然后转换二进制时填进去。
其实我没太懂你这个代码,要么是没贴全吧,调用函数你也没接受返回值啊。