純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...