conta = 16;
oper3 = 0;
oper = 10;
oper2 = 15;
for(i=0;i<16;i++)
{
esadecimale[i] = 0;
}
for(i=0;i<16;i++)
{
binario[i] = 0;
}
esadecimale[10] = 'A';
esadecimale[11] = 'B';
esadecimale[12] = 'C';
esadecimale[13] = 'D';
esadecimale[14] = 'E';
esadecimale[15] = 'F';
printf("Inserisci il numero esadecimale da convertire (4 inserimenti): ");
for(i=4;i>0;i--)
{
scanf("%s",&esadecimale[i]);
}
while(oper3 < 4)
{
if(esadecimale[oper3] < 10)
{
oper = esadecimale[oper3];
while(oper > 0)
{
conta--;
oper2 = oper % 2;
binario[conta] = oper2;
oper = oper/2;
}
}
else
{
while(!(esadecimale[oper3]==esadecimale[oper]))
{
oper++;
}
while(oper > 0)
{
conta--;
oper2 = oper % 2;
binario[conta] = oper2;
oper = oper/2;
}
}
oper = 10;
oper3++;
}
printf("Il numero esadecimale convertito in binario e': ");
for(i=0;i<16;i++)
{
printf("%i",binario[i]);
}
这个代码理应为十六进制数转换成二进制之一。 我试图用 - 对于cycle-而不是“而(oper3 < 4)”,但它并没有解决这个问题。不完全正常的工作操作
我得到的输出是一样的东西0000 0000 0000 1111如果我输入F F F F 而0000 0000 0000 1011如果我输入A B C d
我猜它只是将第二十六进制字符,并在错误的位置了。
如果可能的话,我想要一个解决方案,除了你在这段代码中看到的东西之外不需要知识,因为这个练习明确指出除了数组之外,没有什么比数组还多的了,谢谢。
此代码是否有任何开头或结尾?无论如何,对于所述任务而言,看起来太长了。 –
您的问题存在多个问题,可能会阻止本网站的用户能够帮助您。请仔细阅读[帮助页面](http://stackoverflow.com/help) - 特别是[“?我可以在这里左右问什么议题”(http://stackoverflow.com/help/on-topic) [“我应该避免哪些类型的问题问?”(http://stackoverflow.com/help/dont-ask),[“我怎么问一个很好的问题?”(http://stackoverflow.com/help/how-to-ask)和[“如何创建一个最小,完整和可验证的示例”](http://stackoverflow.com/help/mcve)。 –
'for(i = 4; i> 0; i--){scanf(“%s”,&esadecimale [i]); }'会覆盖已经输入的字符串的一部分。 –