c - 程序以二进制格式打印从 0 到给定数字的所有十进制数

标签 c algorithm

我是 C 语言新手。 我正在编写一个程序来打印从 0 到给定数字(由用户提供)的所有十进制数字,但我的输出不是我所期望的。我不明白我写的程序有什么错误......

#include <stdio.h>
int main()
{
    int x,n;
    printf("Enter any number\n");
    scanf("%d",&x);
    n=x;
    printf("numbers in binary format\n");
    while(n!=0)
    {
        int num[8]={0,0,0,0,0,0,0,0};
        int y[8]={0,0,0,0,0,0,0,0};
        int i=7;
        while(x!=0)
        {
            y[i]=x%2;
            x=x/2;
            i=i-1;
        }
        while(i!=8)
        {
            printf("%d",y[i]);
            i=i+1;
        }
        printf("\n");
        n=n-1;
    }
}

最佳答案

问题出在你的第一个循环

    while(x!=0)
    {
        y[i]=x%2;
        x=x/2;
        i=i-1;
    }

当这个循环结束时,在大多数情况下,你的 i 将为 0,并且你的第二个 while 循环基于这个假设。

只要放一个

i = 0;

在第一个循环之后。它应该可以工作。

关于c - 程序以二进制格式打印从 0 到给定数字的所有十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24951285/

相关文章:

algorithm - 图上点的聚类或 k 中值

ruby - 背包 : how to add item type to existing solution

algorithm - 从区间列表的子集中找到最小值和最大值

c - 如何动态分配函数代码?

c - 是否保证执行 memcpy(0,0,0) 是安全的?

c - 寻找简单算法的大 O

与具有成员 char *ptr 的类型混淆;使用的大小_t; size_t 尺寸?

algorithm - 最快路径算法

c - 堆排序 "visual"树打印额外的零

通过节点找到最佳组合或路径的算法