• 博客园作业2


    一、运行截图

    二、介绍函数

    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.有“感谢使用”和选择“是否继续使用”,比我的更像一个给别人使用的软件;

    七、总结

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

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

  • 相关阅读:
    阿里云观察——阿里云总裁王坚专访
    追寻凌云梦——对话阿里云总裁王坚
    四维的王坚和三维的阿里互联网汽车
    [2011移动者开发大会]王坚:互联网最革命的事是所有事情从离线到在线
    2013年8月,阿里云飞天5K集群成功上线,所有的服务对应的都是同一个系统内核、同一套分布式文件系统
    [搜索引擎大会]谷歌CEO Eric Schmit第一次高调用云和云计算的概念来描述谷歌所提供的互联网服务
    热门搜索引擎的TOP-K算法的python实现(回溯算法遍历trie树)
    海量日志数据提取出访问次数最多的那个IP python实现 总结
    Web数据挖掘 第十二章 Web使用挖掘的读书笔记
    Web数据挖掘 第十一章 观点挖掘和情感分析的读书笔记
  • 原文地址:https://www.cnblogs.com/lim-M/p/11831291.html
Copyright © 2020-2023  润新知