第二次博客园作业

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.代码互评:钟雄飞
程序简介,增加判断是否是二进制数的函数使程序更强。

posted @ 2019-11-08 12:49  xpss  阅读(182)  评论(0编辑  收藏  举报