0

我的代码有什么问题,请帮助我。这是十进制到二进制的转换。根据我的代码,输出将是 2 表示 10,3 表示 11 但它输出总是在末尾添加最后一个值,如 3 它显示 1110,添加上一个输出。我现在该怎么办 ?请帮帮我?

#include<iostream>
#include<stdio.h>
using namespace std;

int main(){

    long int decimalNumber,quotient;

    int binaryNumber[100],i=0,j;

    printf("Enter any decimal number: ");

    //scanf_s("%ld",&decimalNumber);
    while(scanf_s("%ld",&decimalNumber)==1)
    {

            quotient = decimalNumber;

            while(quotient!=0){
             binaryNumber[i++]= quotient % 2;
             quotient = quotient / 2;
           }

           printf("Equivalent binary value of decimal number %d: ",decimalNumber);

           for(j = i -1 ;j>= 0;j--)
               printf("%d",binaryNumber[j]);
           printf("\n");
           printf("Enter any decimal number: ");
    }
    return 0;
}
4

1 回答 1

5

您需要i在每个循环开始时进行初始化

while(scanf_s("%ld",&decimalNumber)==1)
{
    i = 0;

如果没有这个,你会将每个新数字附加到最后一个数字的末尾,重复直到你写到binaryNumber.

于 2013-06-14T10:24:21.847 回答