新手在c ++中询问十进制到二进制

时间:2016-09-22 15:23:18

标签: c++

这个程序假设将十进制转换为二进制,但不知怎的,我搞砸了

有人可以为我指出错误吗?

非常感谢

#include<conio.h>
#include<stdio.h>
    int main(){
    int a;
    int b[20];
    int q = 0;
    printf("decimal : ");scanf("%d",&a);
    while(a>0)) {
        b[q]=a%2;
        a=a/2;      
        q++;

        }while(a>0);
    printf("binary : ");

    for (int i = q-1; i>=0;i--){
        printf("%d",b[q]);
    }

}

2 个答案:

答案 0 :(得分:1)

更正后的代码是:

#include<conio.h>
#include<stdio.h>
int main(){
    int a;
    int b[20];
    int q = 0;
    printf("decimal : ");scanf("%d",&a);
    while(a>0) {
        b[q]=a%2;
        a=a/2;      
        q++;

    }
    printf("binary : ");

    for (int i = q-1; i>=0;i--){
        printf("%d",b[i]);
    }

}

您正在打印b [q]而不是b [i]

答案 1 :(得分:1)

您的代码存在一些问题:

  1. 你添加了额外的&#34;)&#34;第一次同时;
  2. 第二个&#39; while&#39;没用(代码因第一个而重复)
  3. 你不打印你想要的元素(你应该使用var&#39; i&#39;),你真正打印的是最后0/1之后的值(因为你正在使用&#39; q& #39)
  4. 代码应如下所示:

    #include <conio.h>
    #include <stdio.h>
    
    int main() {
        int a;
        int b[20];
        int q = 0;
        printf("decimal: ");
        scanf("%d", &a);
        while (a > 0) {
            b[q] = a % 2;
            a = a / 2;
            q++;
        }
        printf("binary: ");
        for (int i = q - 1; i >= 0; i--) {
            printf("%d", b[i]);
        }
    }