一、程序运行截图
2------>8
2----->10
2------->16
8-------->2
8------>10
8--->16
10---->2
10------>8
10------->16
输入无效,重新输入
二、拓展功能
1.可以实现十六进制的转换。(其他的转十六进制可以转,但十六进制转成其他的还没写好)
2.输入无效时可以重新输入。
三、函数介绍
1.
int number_2()//输入一个二进制函数 { int result; part1:printf("请输入二进制数:"); scanf_s("%d", &result); for (int i = result;i > 0;i=i / 10) { if (i % 10 > 1) { printf("这是无效的二进制,请重新输入 "); goto part1; } } return result; }
输入一个二进制数,返回一个二进制数。
2.
int choose()//选择要二进制转换的进制 { int result; printf("请选择当前要转换的进制 "); printf("二进制【1】 "); printf("八进制【2】 "); printf("十进制【3】 "); printf("十六进制【4】 "); printf("你的选择: "); scanf_s("%d", &result); return result; }
3.
int two_to_others(int number_2, int choose)//二进制!!!!!! { int sum = 0, t = 0; if (choose == 1) //二进制:输入1(二进制),则仍然是二进制输出; { if (number_2 == 0) printf("%04d", number_2); return number_2; } if (choose == 2)//二进制:输入2(八进制),则取三合一,每三位按权相加,如:110=0*1+1*2+1*4=6,按权相加的方式可以将那三位转为十进制, { //可以理解为那三位二进制转为十进制 if (number_2 == 0) printf("%d", number_2); while (number_2 > 0) { sum = sum + two_to_others((number_2 % 1000), 3) * pow(10, t); number_2 = number_2 / 1000; t++; } return sum; } if (choose == 3)//二进制转十进制,按权相加。 { if (number_2 == 0) printf("%d", number_2); while (number_2 > 0) { sum += (number_2 % 10) * pow(2, t); number_2 /= 10; t++; } return sum; } if (choose == 4)//二进制转十六进制,取四合一法:每四位转成十进制数,再转成十六进制数 { char str[80]; int i = 0; while (number_2 > 0) { char a = two_to_others((number_2 % 10000), 3); if (a >= 10 && a <= 15) a = a+55; if (a >= 0 && a <= 9) a = a + 48; str[i] = a; number_2 = number_2 / 10000; i++; } str[i] = '