2016-09-22 44 views
-4

这一计划猜想十进制转换为二进制,但不知何故我搞砸了新手请教一下十进制到二进制的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]); 
    } 

} 
+0

您正在使用C或C++?这看起来像直接的C代码。 – NathanOliver

+0

所以这不会编译,因为'while(a> 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]

+0

哇,谢谢你们 –

1

有一些问题与您的代码:

  1. 您添加了第一个whi的额外“)”乐;
  2. 第二个'while'是无用的(由于第一个代码正在重复)
  3. 你不打印你想要的元素(你应该使用var'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]); 
    } 
}