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]); }'會覆蓋已經輸入的字符串的一部分。 –