使用十进制到二进制转换器传递测试用例时遇到问题



我已经编写了将十进制转换为二进制数的代码,但是我在拥有一组输入(4个测试用例并让它们通过(时遇到了麻烦。

有人可以帮助我解决我做错了什么吗?

#include <stdio.h>
int main(void) {
int quotient, i, j, bin[16] = {0};
int decimal1, decimal2, decimal3, decimal4;
decimal1 = 123;
decimal2 = 1024;
decimal3 = 43981;
decimal3 = 2005;
scanf("%d", &quotient);
i = 0;
if (quotient == 0) {
bin[i++] = 0;
}
while (quotient != 0) {
bin[i] = quotient % 2;
quotient = quotient / 2;
i = i + 1;
}
printf(" The Binary value is: ");
for (j = 15; j >= 0; j--)
printf("%d", bin[j]);
return 0;
}
#include <stdio.h>
#include <limits.h>

char *tobin(long value, char *buff, int type)
{
union 
{
long l;
unsigned long lu;
}lunion;
char *savedptr = buff;
char *reverse = buff;
char savedchar;
if(type)
{
if(value == LONG_MIN) 
{
lunion.lu = 1UL << (sizeof(value) * 8) - 1;
}
else 
{
lunion.lu = (value < 0) ? -value : value; 
}
}
else
{
lunion.l = value;
}
do
{
*buff++ = (lunion.lu & 1) ? '1' : '0';
lunion.lu >>= 1;
}while(lunion.lu);
if(type && value < 0)
{
*buff++ = '-';
}
*buff-- = 0;
while(buff > reverse)
{
savedchar = *buff;
*buff-- = *reverse;
*reverse++ = savedchar;
}
return savedptr;
}

int main()
{
char x[100];
printf("%ld = %sn", LONG_MIN, tobin(LONG_MIN, x, 1));
printf("%ld = %sn", LONG_MIN, tobin(-1, x, 1));
printf("%ld = %sn", LONG_MIN, tobin(-400, x, 1));
printf("%ld = %sn", 0L, tobin(0, x, 1));
printf("%ld = %snnn", LONG_MAX, tobin(LONG_MAX, x, 1));
printf("%ld = %sn", LONG_MIN, tobin(LONG_MIN, x, 0));
printf("%ld = %sn", LONG_MIN, tobin(-1, x, 0));
printf("%ld = %sn", LONG_MIN, tobin(-400, x, 0));
printf("%ld = %sn", 0L, tobin(0, x, 0));
printf("%ld = %sn", LONG_MAX, tobin(LONG_MAX, x, 0));
}

相关内容

最新更新