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

newbie ask about decimal to binary in c++

本文关键字:十进制 二进制 c++ 新手      更新时间:2023-10-16

这个程序应该把十进制转换成二进制但是我搞砸了

有谁能帮我指出这个错误吗?

thanks a lot

#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]);
    }
}

更正后的代码为:

#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. 你添加了一个额外的")"的第一个while;
  2. 第二个'while'是无用的(由于第一个代码正在重复)
  3. 你没有打印你想要的元素(你应该使用变量'i'),你真正打印的是最后一个0/1之后的值(因为你使用'q')

代码应该是这样的:

#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]);
    }
}