C C 語言實現二 八 十 十六進製制的轉換

2021-09-29 09:16:50 字數 3381 閱讀 1697

純c語言實現進製之間的輸入轉換輸出,下附**只是實現了資料的顯示,若要更改使其返回轉換後的數值也是比較容易的。個人感覺c++編寫會更加容易一些,煩請讀者自己更改。其中有部分繁瑣冗雜的地方還請大家見諒orz

核心思想:

1)求模取餘法實現十進位制對其他進製的轉換

2)通過字元陣列儲存要轉換的二/八/十六進製制資料,再逐位儲存到整型陣列當中

3)通過位數與冪的關係完成對十進位制的轉換

1.c語言原版

#includevoid decbinary();     // 十進位制-->二進位制

void decoct(); // 十進位制-->八進位制

void dechex(); // 十進位制-->十六進製制

void binarydec(); // 二進位制-->十進位制

void octdec(); // 八進位制-->十進位制

void hexdec(); // 十六進製制-->十進位制

int input(); // 十進位制轉換的輸入重複**封裝為乙個函式

int exp(int n); // 十進位制轉換二進位制的冪計算

int exp1(int n); // 十進位制轉換八進位制的冪計算

int exp2(int n); // 十進位制轉換十六進製制的冪計算

void menu();

int main()

} while (choice != 0);

getchar();

return 0;

}void menu()

int input()

int exp(int n)

return result;

}int exp1(int n)

return result;

}int exp2(int n)

return result;

}void decbinary()

for (i-=1; i >= 0; i--)

printf("\n");

}void decoct()

for (i -= 1; i >= 0; i--)

printf("\n");

}void dechex()

i++;

n /= 16;

} for (i -= 1; i >= 0; i--)

printf("\n");

}void binarydec()

} if (bina[i] >= '0' &&bina[i] <= '1')

break;

} result = 0;

if (judge == 0)

}if (oct[i] >= '0' &&oct[i] <= '7')

break;

} result = 0;

if (judge == 0)

if (i == count - 1)

result += dec[i];

} printf("%s對應的十進位制數為:%d\n", oct, result); }}

void hexdec()

} if (hex[i] >= '0' &&hex[i] <= '9')

if (hex[i] >= 'a' &&hex[i] <= 'f')

break;

} result = 0;

if (judge == 0)

if (i == count - 1)

result += dec[i];

} printf("%s對應的十進位制數為:%d\n", hex, result);

}}

2.vs2017中成功執行的版本(作者使用的編譯器)

#include#define _crt_secure_no_warnings

#define _crt_nonstdc_no_deprecate

void decbinary();

void decoct();

void dechex();

void binarydec();

void octdec();

void hexdec();

int input();

int exp(int n);

int exp1(int n);

int exp2(int n);

void menu();

int main()

} while (choice != 0);

getchar();

return 0;

}void menu()

int input()

int exp(int n)

return result;

}int exp1(int n)

return result;

}int exp2(int n)

return result;

}void decbinary()

for (i-=1; i >= 0; i--)

printf("\n");

}void decoct()

for (i -= 1; i >= 0; i--)

printf("\n");

}void dechex()

i++;

n /= 16;

} for (i -= 1; i >= 0; i--)

printf("\n");

}void binarydec()

} if (bina[i] >= '0' &&bina[i] <= '1')

break;

} result = 0;

if (judge == 0)

}if (oct[i] >= '0' &&oct[i] <= '7')

break;

} result = 0;

if (judge == 0)

if (i == count - 1)

result += dec[i];

} printf("%s對應的十進位制數為:%d\n", oct, result); }}

void hexdec()

} if (hex[i] >= '0' &&hex[i] <= '9')

if (hex[i] >= 'a' &&hex[i] <= 'f')

break;

} result = 0;

if (judge == 0)

if (i == count - 1)

result += dec[i];

} printf("%s對應的十進位制數為:%d\n", hex, result);

}}

二 八 十 十六進製制之間轉換

進製轉換 十進位制和 二 八 十六進製制之間之間轉換 二 八 十六進製制之間可以借助十進位制來互相轉換 package algorithms author time 2017年5月10日 上午11 37 08 public class sysconvert return bin 十進位制 八進位制 ...

二 八 十 十六進製制之間的轉換

int n1 14 十進位制轉成十六進製制 integer.tohexstring n1 十進位制轉成八進位制 integer.tooctalstring n1 十進位制轉成二進位制 integer.tobinarystring 12 十六進製制轉成十進位制 integer.valueof ffff...

java 二 八 十 十六進製制之間的轉換

int n1 14 十進位制轉成十六進製制 integer.tohexstring n1 十進位制轉成八進位制 integer.tooctalstring n1 十進位制轉成二進位制 integer.tobinarystring 12 十六進製制轉成十進位制 integer.valueof ffff...