gpt4 book ai didi

c - 除以 2 时十进制转为二进制 C

转载 作者:行者123 更新时间:2023-11-30 18:56:57 24 4
gpt4 key购买 nike

我必须编写 2 个将 dec 转换为 bin 的程序。我已经完成了第一个,但是当我尝试运行这个时,它会打印出一组随机数,不知道为什么,这是我所拥有的:

#include <stdio.h>

int getNumber();
int dectoBin(int, int binarray[], int);
void printBin(int binary[], int dec);

int main()
{
int M = 8;
int binarray[M];
int dec = getNumber();
printf("The decimal number you entered was: %d", dec);
decToBin(dec, binarray, M);
printBin(binarray, dec);
return 0;
}

int getNumber()
{
int dec;
printf("Enter any a number between 0 and 255: ");
scanf("%d",&dec);
return dec;
}

int decToBin(int dec, int binarray[], int M)
{
int i, j;
for(i=8; i>=0;i--)
{
while(dec != 0)
{
binarray[i]= dec % 2;
dec = dec / 2; binarray[i] = dec;
}
}
return *binarray;
}

void printBin(int binary[], int dec)
{
int i;
if(dec > 255)
{
printf("please use another number");
main();
}
else
{
for(i =8; i >= 0;i--)
{
printf("%d", binary[i]);
printf("\n");
}
}
}

最佳答案

您设置了 binarray[i] 两次 - 一次正确(在模数语句之后),一次错误(在除 dec 之后)。因此,如果您的十进制数字是 65,那么倒数第二个数字将为 32

您还可以将binarray设置为位数组而不是数字。这会给您带来编译错误,并且可能会提示您发现逻辑错误。

编辑:该程序存在很多控制流问题。您应该在调用 decToBin 之前检查是否 dec > 255,否则程序将无法正确运行。 decToBinary 不应该返回一个 int - 它应该返回一个 int 数组(或者我建议的位),这就是你应该做的发送到printBin。现在您正在返回指向 binArray 的指针(您知道指针是什么吗?)decToBin 也应该返回 void 因为它不执行任何计算。

编辑2:正如其他人指出的那样,您的数组索引不正确,我不知道您如何没有收到数组越界错误。另外,在打印时,您走错了路:您需要使用从 0 开始并以 7 结束的 for 循环。

关于c - 除以 2 时十进制转为二进制 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com