【问题标题】:How do I get My Code to print out Binary Properly?如何让我的代码正确打印出二进制文件?
【发布时间】:2015-11-19 23:34:00
【问题描述】:

我需要使用链接列表和堆栈将十进制更改为二进制,但无论我输入什么,我都会在我的打印语句中返回“1”。有人可以帮帮我吗? 我有所有其他功能正确我需要,但除了 1 之外我什么也得不到

51 int tobin(int n)
52 {
53     int num;
54     while( n != 0)
55     {
56         if(!isEmpty)
57         {
58             push(n % 2);
59             n = n / 2;
60         }
61         else
62         {
63             num = pop();
64         }
65         printf("%d");
66     }
67     return num;
68 }
69 int main()
70 {
71     int num;
72     int bin;
73
74     printf("Enter an integer: ");
75     scanf("%d", &num);
76
77     tobin(bin);
78     printf("Binary: %d\n");
79
80     return 0;
81 }

【问题讨论】:

  • printf("%d"); 你需要告诉它要打印什么,而不仅仅是你想要一个数字(%d) - 与 main() 中的 printf 相同。
  • tobin(bin); --> tobin(num);
  • printf("Binary: %d\n"); 打印什么? , 缺少一个 int 参数
  • tobin(bin);bin和num,是局部变量,它们之间的关系在哪里,bin没有设置
  • 您的头像不合适。请改一下

标签: c struct linked-list binary stack


【解决方案1】:

您需要保存从tobin 返回的值,然后将该值传递给printf

int main()
{
    int num;
    int bin;

    printf("Enter an integer: ");
    scanf("%d", &num);

    bin = tobin(num);
    printf("Binary: %d\n", bin);

    return 0;
}

tobin 方法无法正确处理转换数字 0。在没有看到你的其余代码知道的情况下,我猜tobin 也不会转换负数。您应该检查传递给tobin 的参数n 的值,以确保它是您的代码可以处理的有效数字。

【讨论】:

  • 应该还应该指出还有其他的错误。例如,如果输入了0,那么tobin 将返回一个垃圾值,因为num 没有在该函数中初始化。而且它似乎也在一个空堆栈上做一个pop。更重要的是,看不到“%d”将如何以二进制格式打印。
  • 同意,这里有缺失的部分。他似乎对打印转换后的二进制数很感兴趣,所以我回答了这个问题。第 65 行的 printf 不会打印出二进制数,因此它可能用于调试。
猜你喜欢
  • 2023-04-07
  • 2022-10-02
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2020-03-16
  • 2019-06-18
  • 2017-05-12
  • 1970-01-01
相关资源
最近更新 更多