鱼C论坛

 找回密码
 立即注册
查看: 1744|回复: 3

[已解决]请问怎么能使这个结果倒叙输出

[复制链接]
发表于 2017-7-13 18:22:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


#include "stdafx.h"
#include <process.h>


int main()
{
        int nNumb = 0;
        printf("请输入一个整数: ");
        scanf_s("%d", &nNumb);
_WHILE:
        if ((nNumb & 1) == 1)
        {
                printf("1");
        }
        else
        {
                printf("0");
        }
        nNumb = nNumb >> 1;
        if (nNumb != 0)
        {
                goto _WHILE;
        }
        system("pause");
        return 0;
}

这是让一个数一二进制位输出的程序,我想要使结果倒叙应该怎么做
最佳答案
2017-7-13 19:32:21
那就使用非递归
#include <stdio.h>
#include <process.h>


int main()
{
        char buf[20];
        int index = 0;

        int nNumb = 0;
        printf("请输入一个整数: ");
        scanf_s("%d", &nNumb);
_WHILE:
        if((nNumb & 1) == 1)
        {
                buf[index++] = '1';
        }
        else
        {
                buf[index++] = '0';
        }
        nNumb = nNumb >> 1;
        if(nNumb != 0)
        {
                goto _WHILE;
        }


        index--;
        while(index >= 0)
        {
                putchar(buf[index--]);
        }

        printf("\n");
        system("pause");
        return 0;
}
请输入一个整数: 1024
10000000000
请按任意键继续. . .

怎么能使这个结果倒叙输出

怎么能使这个结果倒叙输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-13 18:34:45 | 显示全部楼层

回帖奖励 +20 鱼币

可以先将结果保存起来,计算完成了再反序输出。
这里提供一种递归方式:
#include <stdio.h>

void _binary(num) {
   if (num > 1) {
      _binary(num >> 1);
   }
   printf("%d", num & 0x01);
}

int main() {
   int num =  0;
   scanf("%d", &num);
   _binary(num);
   return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 19:02:14 | 显示全部楼层
json 发表于 2017-7-13 18:34
可以先将结果保存起来,计算完成了再反序输出。
这里提供一种递归方式:

还没学递归看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-13 19:32:21 | 显示全部楼层    本楼为最佳答案   
那就使用非递归
#include <stdio.h>
#include <process.h>


int main()
{
        char buf[20];
        int index = 0;

        int nNumb = 0;
        printf("请输入一个整数: ");
        scanf_s("%d", &nNumb);
_WHILE:
        if((nNumb & 1) == 1)
        {
                buf[index++] = '1';
        }
        else
        {
                buf[index++] = '0';
        }
        nNumb = nNumb >> 1;
        if(nNumb != 0)
        {
                goto _WHILE;
        }


        index--;
        while(index >= 0)
        {
                putchar(buf[index--]);
        }

        printf("\n");
        system("pause");
        return 0;
}
请输入一个整数: 1024
10000000000
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 10:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表