[c语言] 在十进制转换上遇到的一些简单问题

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 实现这样你可以试着开数组,每次把数组清零,然后转换二进制时填进去。

其实我没太懂你这个代码,要么是没贴全吧,调用函数你也没接受返回值啊。