我的功能只会在一次通话中给出正确答案,但不会在多次通话中给出正确答案

My function will give correct answers on only one call but not on multiple

我正在编写将十进制数转换为二进制数的代码(大学作业)。如果我只执行 DecToBinary(5) 它会给我 101,如果我只执行 DecToBinary(6) 它会给我 110,但是当我在 main() 中执行这两个语句时它会给我 101110101 而它应该只给我 101110 (加入上面的两个答案)。我不明白发生了什么,因为它应该只调用 DecToBinary(5) 并打印 101 然后(不添加换行符)调用 DecToBinary(6) 并打印 110.

void DecToBinary(int dec){

    int temp[64]; //64 is just a max value
    int i,j;

    while(dec>0){
        temp[i]=dec%2;
        dec=dec/2;
        i++;
    }

    for(j=0;j<i;j++){
        printf("%d",temp[i-1-j]);
    }


}

始终初始化变量。在你的情况下检查 i 和 j 。

您还没有初始化变量i。这意味着您的程序的行为未定义,因为 i 的值可能与您想要的 0 不同。

要更正它,只需在声明时初始化i,即int i = 0

变量i未初始化

int i,j;

因此该函数具有未定义的行为。

你需要在while循环之前初始化它。

另外,while 循环应该替换为 do-while 循环。否则值 0 将不会被正确处理。例如

i = 0;

do
{
    temp[i++] = dec % 2;
} while( dec /= 2 );

此外,由于该函数不处理负数,因此其参数的类型应为 unsigned int

void DecToBinary( unsigned int dec )