我一直在與科昌手冊和第7章學習ç做類似的事情,我不得不解決像你這樣的問題,所以我想出了這個解決方案:
// Program to convert a positive integer to another base
#include <stdio.h>
#include <stdbool.h>
int convertedNumber[64];
long int numberToConvert;
int base;
int digit;
void getNumberAndBase (void)
{
bool askAgain = true;
printf ("Number to be converted? ");
scanf ("%li", &numberToConvert);
if (numberToConvert == 0)
{
askAgain = false;
}
while (askAgain)
{
printf ("Base? ");
scanf ("%i", &base);
if (base < 2 || base > 16) {
printf ("Bad base - must be between 2 and 16\n");
} else {
askAgain = false;
}
};
}
void convertNumber (void)
{
digit = 0;
do {
convertedNumber[digit] = numberToConvert % base;
++digit;
numberToConvert /= base;
}
while (numberToConvert != 0);
}
void displayConvertedNumber (void)
{
const char baseDigits[16] =
{ '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
int nextDigit;
printf ("Converted number = ");
for (--digit; digit >= 0; --digit) {
nextDigit = convertedNumber[digit];
printf ("%c", baseDigits[nextDigit]);
}
printf ("\n");
}
int main (void)
{
void getNumberAndBase (void), convertNumber (void),
displayConvertedNumber (void);
while (true)
{
getNumberAndBase();
if (numberToConvert == 0)
{
break;
}
convertNumber();
displayConvertedNumber();
}
return 0;
}
其實你不不需要遞歸函數,像convertNumber函數中那樣的while循環將會執行,您必須劃分直到沒有任何剩餘的內容。
我張貼的例子是無功能參數,但全局變量簡單,因爲這是書上的那一章的水平,但我認爲這會給你,你可以制定進一步
您可以通過啓動一個很好的方向認識到'n'應該是基礎,但你永遠不會使用它;相反,你使用硬編碼的2(這是二進制的基礎)。 –