我已经编写了将十进制转换为二进制数的代码,但是我在输入一组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", "ient);
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;
}
答案 0 :(得分: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 = %s\n", LONG_MIN, tobin(LONG_MIN, x, 1));
printf("%ld = %s\n", LONG_MIN, tobin(-1, x, 1));
printf("%ld = %s\n", LONG_MIN, tobin(-400, x, 1));
printf("%ld = %s\n", 0L, tobin(0, x, 1));
printf("%ld = %s\n\n\n", LONG_MAX, tobin(LONG_MAX, x, 1));
printf("%ld = %s\n", LONG_MIN, tobin(LONG_MIN, x, 0));
printf("%ld = %s\n", LONG_MIN, tobin(-1, x, 0));
printf("%ld = %s\n", LONG_MIN, tobin(-400, x, 0));
printf("%ld = %s\n", 0L, tobin(0, x, 0));
printf("%ld = %s\n", LONG_MAX, tobin(LONG_MAX, x, 0));
}