2016-09-22 25 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]); 
    } 
}