博客园作业2

一、运行截图

二、介绍函数

1.
void mune()
{
	printf("请选择需要的进制转换\n");
	printf("1、十进制转换二进制\n");
	printf("2、二进制转换十进制\n");
	printf("3、十进制转换八进制\n");
	printf("4、八进制转换十进制\n");
	printf("5、二进制转换八进制\n");
	printf("6、八进制转换二进制\n");
	printf("7、十进制转换十六进制\n");
	printf("8、十六进制转换十进制\n");

菜单

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("\n");

将十进制转化成二进制

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\n", 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("\n");
}

将十进制转化为八进制

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\n", 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("\n");

将二进制转化成十进制,再将十进制转换成八进制

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("\n");
	}

将八进制转换成十进制,再将十进制转换成二进制

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("\n");
	}

将十进制转换成十六进制

9.
void SixteenToTen()
	{
		int num = 0;
		printf("输入一个十六进制数: ");
		scanf("%x", &num);
		printf("十六进制数 %x 转换为十进制为 %d\n", 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("请选择需要的进制转换\n");
	printf("1、十进制转换二进制\n");
	printf("2、二进制转换十进制\n");
	printf("3、十进制转换八进制\n");
	printf("4、八进制转换十进制\n");
	printf("5、二进制转换八进制\n");
	printf("6、八进制转换二进制\n");
	printf("7、十进制转换十六进制\n");
	printf("8、十六进制转换十进制\n");


}
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("您的选择不正确\n");
			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("感谢使用\n");
}

1.较多使用多分支结构较为繁琐

2.想到了将二、八进制先转成十进制在进行转化

3.有“感谢使用”和选择“是否继续使用”,比我的更像一个给别人使用的软件;

七、总结

收获:更加熟悉函数的应用;编写程序也应注重美观,毕竟是要给别人使用

理解:使用特定的函数可以更快捷、方便的写出我们想要的代码,使代码简化

posted on 2019-11-10 18:52  lim-M  阅读(161)  评论(0编辑  收藏  举报