【问题标题】:Having trouble converting a decimal into a binary in C. No output [closed]在C中将十进制转换为二进制时遇到问题。没有输出[关闭]
【发布时间】:2018-04-02 00:59:07
【问题描述】:

通常这很容易,但我刚开始学习 C。我正在使用 Visual Studio 2017 社区,现在我似乎无法使用手表。当我运行程序时,它什么也不输出。我做错了什么?

//20_10_17
//Crehul Vlad
//Base conversion: Decimal into Binary
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void main() {
    int k=0, i, r, nr, c, N[64];
    printf("Decimal Nr: "); scanf("%d", &nr);
    c = nr;
    while (nr % 2 != 0) {
        r = c % 2;
        c = c / 2;
        N[k] = r; k++;
    }
    for (i = k; i > 0; i--) {
        printf("%d ", N[i]);
    }

_getch();
return 0;
}

【问题讨论】:

  • void main 是错误的。 main 应该返回 int
  • 忘记刷新输出。
  • _getch 不是标准函数。
  • @melpomene 除了感谢您的提醒之外没有改变任何东西。
  • while (nr % 2 != 0) =====> nr 没有改变。这可能是一个答案,但代码太差了,它会成为一个教程。

标签: c base


【解决方案1】:
int main()
{
    int k=0, i, r, nr, c, N[64];
    printf("Decimal Nr: "); scanf("%d", &nr);
    c = nr;
    if(nr==0)
      printf("0");
    else{
    while (nr) {
        r = nr % 2;
        nr = nr / 2;
        N[k] = r; k++;
      }
    }
    // original number in variable c
    for (i = k-1; i >= 0; i--) {
        printf("%d ", N[i]);
    }
    return 0;
}

试着理解算法的作用。在编写终止条件时要小心。

【讨论】:

  • nr0 时,将使用未初始化的变量。
  • 你修改了整个程序,现在工作方式不同了,仍然是错误的
  • @WeatherVane.:已编辑。
  • print 0; 真的吗?
  • @Michi.:我只是想说......当你 fork 并运行它时......它显示了正确的输出。但最初它显示了一些荒谬的输出......这可能会令人困惑。我明白你的意思。但是是的,您必须忽略最初的故障... :)
猜你喜欢
  • 2013-05-22
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2021-02-16
  • 2021-01-29
  • 1970-01-01
  • 2021-05-09
  • 2012-12-26
相关资源
最近更新 更多