【发布时间】:2021-12-14 20:59:21
【问题描述】:
我需要一个输出,比如如果数字为 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);
}
}
【问题讨论】:
-
这不是你的错,但是:这是一个几乎不可能的问题。在过去的几周里,我们已经看到了它的几种变化(也许是你的同学,在同一个虐待狂导师的指导下?)。
-
@SteveSummit 引用的“几乎不可能”的部分是以正确的顺序获取位(例如 100 而不是 4 的 001)。使用后遍历打印递归就可以了。
-
您可能无法一下子解决所有问题。我建议首先解决以下两个更简单的问题之一: (1) 打印前 N 个二进制数,但您被允许使用数组。 (2) 打印前 N 个二进制数,其中每个数都有其数字向后。也就是说,4 是
001,5 是101,6 是011,8 是0001,10 是0101,等等。一旦你有一个工作,那么你可以解决你的实际问题。我正要给你同样的提示 ikegami 做的:递归。 -
您发布的代码不起作用的原因基本上是
bin_n不是数组。如果它是一个适当索引的数组,你的代码就可以正常工作。 -
@SteveSummit ik 对于像我这样的初学者来说,至少没有数组是不可能的,希望有人能提供解决方案:(
标签: c visual-studio binary logic decimal