A.動作は、スクリーンショットを結果
1.バイナリ小数ターン
2.進、小数ターン
3進変換16進
進から4進
5.プロンプトが表示され、所定の入力エラー
II。機能と対応する機能
1.バイナリ小数ターン
void TenToTwo() {
int num, m, x, i;
i = 0;
int n = 2;
int a[32];
printf("输入一个整数:");
scanf("%d", &num);
m = num;
while (num > 0) {
x = (num % n);
a[i] = x;
num /= n;
i++;
}
printf("十进制数%d转换为二进制数为:", m);
for (i--;i >= 0;i--) {
printf("%d", a[i]);
}
printf("\n");
}
2.進、小数ターン
void TenToEight() {
int num, m, x, i;
i = 0;
int n = 8;
int a[32];
printf("输入一个整数:");
scanf("%d", &num);
m = num;
while (num > 0) {
x = (num % n);
a[i] = x;
num /= n;
i++;
}
printf("十进制数%d转换为八进制数为:", m);
for (i--;i >= 0;i--) {
printf("%d", a[i]);
}
printf("\n");
}
3進変換16進
void TenToSixteen() {
char arr[] = "0123456789ABCDEF";
char hex[16];
int i = 0;
int j = 0;
int num = 0, a = 0;
printf("输入一个整数:");
scanf("%d", &num);
a = num;
while (num) {
hex[i++] = arr[num % 16];
num /= 16;
}
printf("十进制数%d转换为十六进制数为:", a);
for (j = i - 1;j >= 0;j--) {
printf("%c", hex[j]);
}
printf("\n");
}
4.二進化十進数
void TwoToTen() {
int n, a;
int sum = 0, i = 0, m;
printf("输入一个二进制数:");
scanf("%d", &n);
a = n;
while (n != 0) {
m = n % 10;
if (m >= 2) {
printf("您输入的不是二进制数,请重新输入:\n");
return TwoToTen ();
}
n /= 10;
sum += m * pow(2, i);
i++;
}
printf("二进制数%d转为十进制数为:%d\n", a, sum);
}
5.進小数ターン
void EightToTen() {
int n, a;
int sum = 0, i = 0, m;
printf("输入一个八进制数:");
scanf("%d", &n);
a = n;
while (n != 0) {
m = n % 10;
if (m > 7) {
printf("您输入的数不为八进制数,请重新输入:\n");
return EightToTen();
}
n /= 10;
sum += m * pow(8, i);
i++;
}
printf("八进制数%d转换为十进制数为%d\n", a, sum);
}
進数から前記小数
void SixteenToTen() {
int num = 0;
printf("输入一个十六进制数:");
scanf("%x", &num);
printf("十六进制数%x转换为十进制数为%d\n", num, num);
}
7.menu機能
void mune() {
printf("请选择\n");
printf("1.十进制转换为二进制\n");
printf("2.十进制转换为八进制\n");
printf("3.十进制转换为十六进制\n");
printf("4.二进制转换为十进制\n");
printf("5.八进制转换为十进制\n");
printf("6.十六进制转换为十进制\n");
printf("0.退出\n");
}
三.main機能
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
int n = 0;
while (1) {
mune();
printf("请选择:");
scanf("%d", &n);
switch (n) {
case 1:TenToTwo();
break;
case 2:TenToEight();
break;
case 3:TenToSixteen();
break;
case 4:TwoToTen();
break;
case 5:EightToTen();
break;
case 6:SixteenToTen();
break;
case 0:
exit(0);
break;
default:
printf("您的选择错误!\n");
break;
}
}
}
IV。マインドマッピング
V.の問題が発生しました
その後、電源を入れ、その後、様々なバイナリの間で変換する方法を知ってもらうために、および方法の最初のノーアイデアで1.関数を記述するために始めた、とのアレイを使用することにより、多く簡単になります。
Baiduはあなたが%Xに直接使用することができることを知っていることで2. 10進数16進数は、その後、電源が入りません。
3.入力した値が彼らの選択と再入力を思い出すべきバイナリ必要がない場合には、その後、機能が無効、唯一の直接の先頭に戻る必要がない場合、後にのみ知っている死のサイクルに戻すことができないリターンを書く方法を知りませんでした書き込み機能は、することができます。
V.コードピアレビュー
ヤンタオネットワーク1913
void Numchange(int m, int b)//将10进制数转化为任意进制数
{
int n = m;
int count = 0;
if (m == 0) printf("0");
while (n != 0)
{
n = n / b;
count++;
}
int number;
for (int i = count; i >= 1; i--)
{
number = m / (int)pow(b, i - 1);
if (number < 10) {
printf("%d", number);
}
else {
printf("%c", number + 55);
}
m = m % (int)pow(b, i - 1);
}
}
、コードは、CAN出力は、10進数は、他のすべての入力、彼は最初に全ての10進数に変換し、次いで任意進数に変換し続け、非常に簡潔であり、。彼と比較すると、私のコードは非常に複雑です。
VI。まとめ
このジョブを書き込むこと1.は私より身近バイナリ変換を行い、配列を使用して、コードをよりシンプルにするために知っている、と私はまた、良いアイデアは、多くの時間を節約し、コードをよりシンプルかつ明確にすることができますがあることに気づきました。
シンプルで機能を呼び出すことによって2.プログラムは、動作速度を向上させ、そしてプログラムが容易に理解すること。