zoukankan      html  css  js  c++  java
  • 第二次博客作业

    一、程序运行截图

    2------>8

    2----->10

    2------->16

    8-------->2

    8------>10

    8--->16

    10---->2

    10------>8

    10------->16

    输入无效,重新输入

    二、拓展功能

    1.可以实现十六进制的转换。(其他的转十六进制可以转,但十六进制转成其他的还没写好)

    2.输入无效时可以重新输入。

    三、函数介绍

    1.

    int number_2()//输入一个二进制函数 
    {
        int result;
        part1:printf("请输入二进制数:");
        scanf_s("%d", &result);
        for (int i = result;i > 0;i=i / 10)
        {
            if (i % 10 > 1)
            {
                printf("这是无效的二进制,请重新输入
    ");
                goto part1;
            }
        }
        return result;
    }

    输入一个二进制数,返回一个二进制数。

    2.

    int choose()//选择要二进制转换的进制 
    {
        int result;
        printf("请选择当前要转换的进制
    ");
        printf("二进制【1】
    ");
        printf("八进制【2】
    ");
        printf("十进制【3】
    ");
        printf("十六进制【4】
    ");
        printf("你的选择: ");
        scanf_s("%d", &result);
        return result;
    }

    3.

    int  two_to_others(int number_2, int choose)//二进制!!!!!!
    {
        int sum = 0, t = 0;
        if (choose == 1)                                       //二进制:输入1(二进制),则仍然是二进制输出;
        {
            if (number_2 == 0)
                printf("%04d", number_2);             
            return number_2;
        }
        if (choose == 2)//二进制:输入2(八进制),则取三合一,每三位按权相加,如:110=0*1+1*2+1*4=6,按权相加的方式可以将那三位转为十进制,
        {                                                                                      //可以理解为那三位二进制转为十进制
            if (number_2 == 0)           
                printf("%d", number_2);
            while (number_2 > 0)
            {
                sum = sum + two_to_others((number_2 % 1000), 3) * pow(10, t);
                number_2 = number_2 / 1000;
                t++;
            }
            return sum;
        }
        if (choose == 3)//二进制转十进制,按权相加。
        {
            if (number_2 == 0)
                printf("%d", number_2);
            while (number_2 > 0)
            {
                sum += (number_2 % 10) * pow(2, t);
                number_2 /= 10;
                t++;
            }
            return sum;
        }
        if (choose == 4)//二进制转十六进制,取四合一法:每四位转成十进制数,再转成十六进制数
        {
            char str[80];
            int i = 0;
            while (number_2 > 0)
            {
                char a = two_to_others((number_2 % 10000), 3);
                if (a >= 10 && a <= 15)
                    a = a+55;
                if (a >= 0 && a <= 9)
                    a = a + 48;
                str[i] = a;
                number_2 = number_2 / 10000;
                 i++;
            }
            str[i] = '';
            for (int j = i - 1;j >= 0;j--)
                printf("%c", str[j]);
            return 0;
        }
    
    
    }

    第一个形参是输入的二进制数,第二个形参是选择转换的进制数。

    每一种转换都有相应的方法。

    4.

    int main()
    {
        int first,sum;
        printf("欢迎使用进制转换器
    ");
        printf("请选择当前要被转换的进制
    ");
        printf("二进制【1】
    ");
        printf("八进制【2】
    ");
        printf("十进制【3】
    ");
        printf("十六进制【4】
    ");
        printf("你的选择:");
        scanf_s("%d", &first);
        switch (first)
        {
        case 1:
        {
             sum = two_to_others(number_2(), choose());
            if (sum != 0)
                printf("%d", sum);
        }
        break;
        case 2:
        {
         sum=eight_to_others(number_8(), choose());
         if (sum != 0)
             printf("%d", sum);
        }
        break;
        case 3:
        {
            sum = ten_to_others(number_10(), choose());
            if(sum!=0)
            printf("%d", sum);
        }
            break;
        case 4:printf("对不起,还没有开通这项服务");break;
        }

    该函数是让用户选择要被转的进制数(first),然后使用switch函数,按first的值选择case.

    四、思维导图

     

     五、遇到的问题

    1、例如:switch中,我遇到了一个代号C2360的error,说明变量尽量不要在switch内定义,尽量在switch外部定义变量

    2.在八进制转二进制时,取三位,不足三位则补零。于是采用%03d来写,但是第一项不需要补0;

       解决:第一项单独输出,其余按%03d输出。

    3.定义 char a=一个十进制数,此时a的值可以是asc2码的值,也可以是字符,如果要转换成十六进制数,则0~9,需a=a+48,使a=字符'a'(数字字符),10~15也类似。

    六、

    收获:1.觉得自己之前只顾着刷pta没有实战经验。现在实战,代码多,前后联系大,不免觉得有点吃力,因此以后觉得可以多实践多逛博客园看看其他人的经验

              2. 觉得自己会的太少了

    对函数的理解:1.函数可以是有返回的(有数组,int,double 等类型),负责输入n个数进去,然后返回你想要的结果

                             2.无返回值可以用于打印输出等

  • 相关阅读:
    Pythoy 数据类型序列化——json&pickle 模块
    Python xml 模块
    Spring MVC <mvc:annotation-driven/>的作用
    Spring MVC学习笔记
    springboot配置logback日志
    Git master合并分支时提示“Already up-to-date”
    解决idea tomcat乱码问题
    MYSQL 八大优化方案
    SpringBoot项目集成PageHelper使用
    Git--远程仓库版本回退方法
  • 原文地址:https://www.cnblogs.com/zzh-draven/p/11831594.html
Copyright © 2011-2022 走看看