一、运行截图
二、介绍函数
1.
void mune()
{
printf("请选择需要的进制转换
");
printf("1、十进制转换二进制
");
printf("2、二进制转换十进制
");
printf("3、十进制转换八进制
");
printf("4、八进制转换十进制
");
printf("5、二进制转换八进制
");
printf("6、八进制转换二进制
");
printf("7、十进制转换十六进制
");
printf("8、十六进制转换十进制
");
菜单
2.
void TenToTwo()
{
int number, m, c, i = 0, n = 2;
int a[32];
printf("输入一个整数:");
scanf("%d", &number);
m = number;
while (number > 0)
{
c = (number % n);
a[i] = c;
number = number / n;
i++;
}
printf("十进制数%d转换成二进制数是:", m);
for (i--; i >= 0; i--)
printf("%d", a[i]);
printf("
");
将十进制转化成二进制
3.
void TwoToTen()
{
long long n, a;
int sum = 0, i = 0, m;
printf("输入一个二进制数: ");
scanf("%lld", &n);
a = n;
while (n != 0)
{
m = n % 10;
n /= 10;
sum += m * pow(2, i);
++i;
}
printf("二进制数 %lld 转换为十进制为 %d
", a, sum);
}
将十进制转化为二进制
4.
void TenToEight()
{
int number, m, c, i = 0;
int n = 8;
int a[32];
printf("输入一个整数:");
scanf("%d", &number);
m = number;
while (number > 0)
{
c = (number % n);
a[i] = c;
number = number / n;
i++;
}
printf("十进制数%d转换成八进制数是:", m);
for (i--; i >= 0; i--)
printf("%d", a[i]);
printf("
");
}
将十进制转化为八进制
5.
void EightToTen()
{
int n, a;
int sum = 0, i = 0, m;
printf("输入一个八进制数: ");
scanf("%d", &n);
a = n;
while (n != 0)
{
m = n % 10;
n /= 10;
sum += m * pow(8, i);
++i;
}
printf("八进制数 %d 转换为十进制为 %d
", a, sum);
}
八进制转化为十进制
6.
void TwoToEight()
{
long long n, a;
int sum = 0, j = 0, m;
printf("输入一个二进制数: ");
scanf("%lld", &n);
a = n;
while (n != 0)
{
m = n % 10;
n /= 10;
sum += m * pow(2, j);
++j;
}
int c;
int i = 0;
int b[32];
while (sum > 0)
{
c = (sum % 8);
b[i] = c;
sum = sum / 8;
i++;
}
printf("换成八进制数是:", sum);
for (i--; i >= 0; i--) {
printf("%ld", b[i]);
}
printf("
");
将二进制转化成十进制,再将十进制转换成八进制
7.
void EightToTwo()
{
long long n, a;
int sum = 0, i = 0, m;
printf("输入一个八进制数: ");
scanf("%d", &n);
a = n;
while (n != 0)
{
m = n % 10;
n /= 10;
sum += m * pow(2, i);
++i;
}
int k, c, j = 0;
int b[32];
while (sum > 0)
{
c = (sum % 2);
b[j] = c;
sum = sum / 2;
j++;
}
printf("转换成二进制数是:", sum);
for (j--; j >= 0; j--)
printf("%d", b[j]);
printf("
");
}
将八进制转换成十进制,再将十进制转换成二进制
8.
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 = num / 16;
}
printf("十进制数%d转换成十六进制数是:", a);
for (j = i - 1; j >= 0; --j)
printf("%c", hex[j]);
printf("
");
}
将十进制转换成十六进制
9.
void SixteenToTen()
{
int num = 0;
printf("输入一个十六进制数: ");
scanf("%x", &num);
printf("十六进制数 %x 转换为十进制为 %d
", num, num);
}
将十六进制转换成十进制
三、main函数
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void TenToTwo();
void TwoToTen();
void TenToEight();
void EightToTen();
void TwoToEight();
void EightToTwo();
void TenToSixteen();
void SixteenToTen();
void mune()
{
printf("请选择需要的进制转换
");
printf("1、十进制转换二进制
");
printf("2、二进制转换十进制
");
printf("3、十进制转换八进制
");
printf("4、八进制转换十进制
");
printf("5、二进制转换八进制
");
printf("6、八进制转换二进制
");
printf("7、十进制转换十六进制
");
printf("8、十六进制转换十进制
");
}
int main()
{
int choise = 0;
while (1)
{
mune();
printf("您的选择:");
scanf("%d", &choise);
switch (choise)
{
case 1:TenToTwo();
break;
case 2:TwoToTen();
break;
case 3:TenToEight();
break;
case 4:EightToTen();
break;
case 5:TwoToEight();
break;
case 6:EightToTwo();
break;
case 7:TenToSixteen();
break;
case 8:SixteenToTen();
break;
default:
printf("您的选择不正确
");
break;
}
}
}
四、思维导图
五、遇到的问题
1.一开始缺少函数说明导致编译错误;
2.二进制转八进制直接转太过复杂,通过百度查到了itoa函数但并不会用,经同学提醒先将二进制或八进制转成十进制,再转成八进制或二进制;
3.在编写函数时经常遇到重复定义,需要多加注意;
4.缺少错误提示
5.有些进制转化的方法一开始想不到,问同学后才想到
六、代码互评(曾广芝)
void turn3()
{
int a,b[30],c,i=0,d;
printf("请输入十进制数:");
scanf("%d",&a);
while(a!=0)
{
b[i]=a%16;
c=a/16;
a=c;
i++;
}
printf("转化为十六进制为:");
while(i>0)
{
d=b[--i];
if(d==10)
printf("A");
else
if(d==11)
printf("B");
else
if(d==12)
printf("C");
else
if(d==13)
printf("D");
else
if(d==14)
printf("E");
else
if(d==15)
printf("F");
else
printf("%d",d);
}
printf("感谢使用
");
}
1.较多使用多分支结构较为繁琐
2.想到了将二、八进制先转成十进制在进行转化
3.有“感谢使用”和选择“是否继续使用”,比我的更像一个给别人使用的软件;
七、总结
收获:更加熟悉函数的应用;编写程序也应注重美观,毕竟是要给别人使用
理解:使用特定的函数可以更快捷、方便的写出我们想要的代码,使代码简化