第二次博客园作业
1.运行截图
(1)主界面
(2)运行界面
2.函数介绍
(1)菜单
void menu()
{
printf(" 进制转换 \n");
printf(" \n");
printf(" 1.二进制转十进制 \n");
printf(" 2.八进制转十进制 \n");
printf(" 3.十六进制转十进制 \n");
printf(" 4.十进制转二进制 \n");
printf(" 5.十进制转八进制 \n");
printf(" 6.十进制转十六进制 \n");
printf(" 0.退出 \n");
printf(" Tip:如需其他转化请先转化为十进制或其他进制再进行二次转化 \n");
}
(2)二进制转十进制
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 += (int) m * pow(2, i);
++i;
}
printf("二进制数 %lld 转化为十进制数为 %d\n", a, sum);
}
(3)八进制转十进制
void EighttoTen()
{
int n, a, 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);
}
(4)十六进制转十进制
void SixteentoTen()
{
int num = 0;
printf("请输入一个十六进制数:");
scanf("%x", &num);
printf("十六进制数 %x 转化为十进制为 %d\n", num, num);
}
(5)十进制转二进制
void TentoTwo()
{
int num, m, c, i = 0;
int a[32];
printf("请输入一个十进制数:");
scanf("%d", &num);
m = num;
while (num > 0)
{
c = num % 2;
a[i] = c;
num = num / 2;
i++;
}
for (i--; i >= 0; i--)
printf("十进制数 %d 转化成的二进制数是 %d\n", m, a[i]);
}
(6)十进制转八进制
void TentoEight()
{
int num, m, c, i = 0;
int a[32];
printf("请输入一个十进制数:");
scanf("%d", &num);
m = num;
while (num > 0)
{
c = num % 8;
a[i] = c;
num = num / 8;
i++;
}
for (i--; i >= 0; i--)
printf("十进制数 %d 转化成的八进制数是 %d\n", m, a[i]);
}
(7)十进制转十六进制
void TentoSixteen()
{
char arr[] = "0123456789ABCDEF";
char hex[16];
int i = 0, j = 0, num = 0, a = 0;
printf("请输入一个十进制数:");
scanf("%d", &num);
a = num;
while (num)
{
hex[i++] = arr[num % 16];
num = num / 16;
}
for (j = i - 1; j >= 0; --j)
printf("十进制数 %d 转化为十六进制数是 %c\n", a, hex[j]);
}
3.主函数
int main()
{
int n = 0;
while (1)
{
menu();
printf("请选择您所要转换的进制:");
scanf("%d", &n);
switch (n)
{
case 1:TwotoTen();
break;
case 2:EighttoTen();
break;
case 3:SixteentoTen();
break;
case 4:TentoTwo();
break;
case 5:TentoEight();
break;
case 6:TentoSixteen();
break;
case 0:
exit(0);
break;
default:
printf("您的选项错误!\n");
break;
}
}
}
4.思维导图
5.问题
1.丢三落四,常遗漏定义赋值。
解决方法:vs自带查错和学姐指导。
2.长整型的数直接赋给整型
解决方法:强制转化。
3.对于数组不熟悉
解决办法:借鉴并理解别人的代码
4.程序无法运行调试
解决办法:询问学姐,有scanf关掉sdl检查。
6.代码互评:钟雄飞
程序简介,增加判断是否是二进制数的函数使程序更强。