c程序生成从1到n的二进制数

2024-01-26

我需要一个输出,例如如果数字是 5,则输出应该是 5 个二进制数直到 5,但从 1 开始,下面给出了示例。不使用数组即可完成

输入:5 输出:1,10,11,100,101

但我得到了 输出像 这输入=5 输出=1,11,11,111,111

这个错误是因为错误的指令吗 任何提示或解决方案

#include <stdio.h>
#include <math.h>
void binary_number(int n)
{

    int bin_n = 0;

    int i = 0;

    while (n > 0)
    {

        bin_n = n % 2;

        n = n / 2;

        i++;

    }
    for (int j = i - 1; j >= 0; j--)

        printf("%d", bin_n, j);

    printf("\n");
}
void binary_number_generation(int n)
{
    for (int i = 0; i <= n; i++)

    {
        binary_number(i);
    }
}
int main()
{
    int n;

    printf("Enter the end value:");

    scanf("%d", &n);


    printf("\nBinary Number from 1 to %d:", n);

    printf("\n");

    binary_number_generation(n);

}

这里我有一个新代码 idk 我做了什么,但它确实给出了结果

#include <stdio.h>
int main()
{
    int n,i=0,bin=0,plc,dig=0,j;
    printf("Enter the n value : ");
    scanf("%d",&n);
    printf("\nBinary numbers from 1 to %d : ",n);
    for(i=0;i<=n;i++)
    {
        plc=0;bin=0;dig=0;
        for(plc=1,j=i;j>0;j=j/2)
        {
            dig=j%2;
            bin=bin+(dig*plc);
            plc=plc*10;
        }
        printf("%d\n",bin);
    }
}

我们以 6 为例。

610 = 1 * 22 + 1 * 21 + 0 * 20 = 1102

通常,在构建二进制数时,您会使用数组。但我们不能。但是如果我们可以将 110 以 2 为基数(六)转换为数字 110 以 10 为基数(一百一十)呢?

11010 = 1 * 102 + 1 * 101 + 0 * 100

这看起来可行!

6 base 10 = 1 * 2^2  + 1 * 2^1  + 0 * 2^0  = 110 base 2

            |          |          |
            v          v          v

            1 * 10^2 + 1 * 10^1 + 0 * 10^0 = 110 base 10

我们将此格式称为十进制编码的二进制(参考二进制编码的十进制 https://en.wikipedia.org/wiki/Binary-coded_decimal)。这将使我们能够做的是使用printf %d或者喜欢打印号码。

解决方案如下。在继续阅读之前,您应该尝试自己实现它。


#include <inttypes.h>
#include <stdio.h>
#include <stdint.h>

// Converts XYZ (base 2) to XYZ (base 10)
// 8 bit inputs require ceil(log2(11111111)) = 24 bit outputs.
// 16 bit inputs require ceil(log2(1111111111111111)) = 50 bit outputs.
uint64_t to_dcb(uint16_t n) {
   uint64_t dcb = 0
   uint64_t factor = 1;
   while (n > 0) {
      dcb += (n & 1) * factor;
      n >>= 1;
      factor *= 10;
   }

   return dcb;
}

int main(void) {
   printf("%" PRIu64 "\n", to_dcb(6));
   return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c程序生成从1到n的二进制数 的相关文章

  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐