自学 只看了c primer plus前五章 用while 变量编的十进制转二进制出问题啦

自学 只看了c primer plus前五章 刚看完while循环和求模和截断 就写了下面十进制转二进制的东西

img

上半部分我的想法是先预留出空位 等下面求了余数后在退格打进去 运行起来也正常
下半部分
我的想法是第一个余数退格1位 其余退格两位打进预留的空位里

运行起来1-4正常 后面就不能按预期运行了

img

麻烦用我能看懂的 详细地解释一下 或者只用我学的内容 给个完美的程序

另外问一下 \b退格后再输入内容 光标移到该行末尾还是在退格位置后面

用\b参考代码如下:

#include <stdio.h>
int main()
{
    int n,t;
    scanf_s("%d",&n);
    t = n;
    while(t/2!=0)
    {
        printf(" ");
        t = t/2;
    }
    while(n!=0)
    {
        printf("%d\b\b", n%2);
        n = n/2;
    }
    printf("\n");
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

下半部分的\b去掉,输出都被删了
数组应该学了把,把结果存数组里倒着输出。

\b退格,光标会向前移一个位置,如果\b后继续输出,则会从光标处输出
十进制转二进制

#include <stdio.h>
int main()
{
    int n,a[50],i=0;
    printf("输入十进制数:");
    scanf("%d",&n);
    while(n!=0)
    {
        a[i]=n%2;
        n=n/2;
        i++; 
    }    
    printf("二进制:");
    for(i=i-1;i>=0;i--)
        printf("%d",a[i])
    return 0;
}