• 第二次博客园作业




                                                                              函数+进制转换器v1.0beta



    1,运行截图:

    (1)输入错误进制数:

    (2)输入错误转换进制数:

    (3)十进制转二进制演示:

    (4)十六进制转十进制演示:(加入了十六进制的计算)

    2,代码演示:

    (1)将输入数转化为10进制:

    int Numberchange10(char a[], int N)
    {
        int l, i, num,sum=0;
            
        l = strlen(a);//验证字符串长度
        for (i = 0; i < l; i++)//依次判断输入数的单个数字
        {
            if (a[i] >= '0' && a[i] <= '9') 
                num = a[i] - '0';
            else if (a[i] >= 'A' && a[i] <= 'F')
                num = a[i] - 'A' + 10;
            sum = sum * N + num;
        }
        return sum;//返回10进制值
    }

    (2)将10进制数转换为所求进制数:

    void Numberchange(int m, int N)
    {
        int n;
        if (m)
        {
            Numberchange(m / N, N);//函数循环 
            n = m % N;
            if (n < 10)
                printf("%d", n);//小于10直接输出
            else
                printf("%c", n + 55);//大于10转换成字符输出
        }
    }

    (3)main函数:

    int main()
    {
        int N, b;
        char a[20]; //定义数组(用来以字符串的形式存放转化数 )       
        printf("请输入待转换数字的进制:");
    
            scanf("%d", &N);         
        
            if(N!=2&&N!=8&&N!=10&&N!=16)//判断 
        {
        printf("错误!该进制无法转换。");
        return 0;
        } 
        printf("请输入待转换数字:");
        getchar();//将转化数存入数组         
        gets(a);                        //将输入的n进制数存放在数组a中
        int m = Numberchange10(a, N); //将输入数转换为10进制
        printf("请输入需转化的进制数:");
        
            scanf("%d", &b);
        
            if(b!=2&&b!=8&&b!=10&&b!=16)//判断 
        {
        printf("错误!该进制无法转换。");
        return 0;
        } 
        printf("转换的结果为:");
        Numberchange(m, b);//执行函数输出10进制转换结果
        printf("
    ");
        system("pause");//暂停等待用户信号 
        return 0;
    }

    3,思维导图:

    4,遇到的问题:

    (1):不清楚如何编写一个函数一次性将任意进制数转化为10进制。

    解决办法:百度,翻书,发现可以利用数组,将任意数的单个项分配到数组中,然后判断类型进行10进制化。

    (2):不明白void与int的区别。

    解决办法:百度,翻书。void类型的函数不会返回值,而int类型的函数会返回值。

    (3):不知道如何将10进制数在转换成任意进制。(对进制转换还是了解甚少)

    解决办法:请教度娘,运用函数内循环直接计算。(对函数内调用函数也不太了解,日后会加强理解)

    5,代码互评

    int main()
    {
        int system1,system2,x;
        printf("输入待转换值为何进制数
    ");
        printf("二进制输入2;八进制输入8;十进制输入10
    ");
        printf("输入进制数:");
        scanf("%d",&system1);
        if(system1!=2&&system1!=8&&system1!=10){
            printf("ERROR!");
            return 0;
        }
        printf("输入转换后的数为何进制数
    ");
        printf("二进制输入2;八进制输入8;十进制输入10
    ");
        printf("输入进制数:");
        scanf("%d",&system2);
        if(system2!=2&&system2!=8&&system2!=10){
            printf("ERROR!");
            return 0;
        }
        printf("输入待转换数:");
        scanf("%d",&x);
        if(system1==2&&system2==8){
            twoTOeight(x);
        }
        if(system1==2&&system2==10){
            twoTOten(x);
        }
        if(system1==8&&system2==2){
            eightTOtwo(x);
        }
        if(system1==8&&system2==10){
            eightTOten(x);
        }
        if(system1==10&&system2==2){
            tenTOtwo(x);
        }
        if(system1==10&&system2==8){
            tenTOeight(x);
        }
        if(system1==system2){
            printf("你想这么玩吗,那答案就是%d",x);
        }
        return 0;
    }

    该代码是列举了所有进制转换的情况,写起来比较复杂。

    而我的是使用两个函数直接进行进制转换,较为简便。(当然是问过度娘的,我承认。)

     但是他的代码相对与我的更为规整。在代码的格式上以及对进制转换的深度理解我还要加强

    总结来说就是还是不够熟练,还是要依靠度娘。一定还要持续练习。

  • 相关阅读:
    android kl文件
    ELF文件结构描述
    jquery开头
    win7无声音显示“未插入扬声器或耳机” 怎么解决
    xhtml头文件设置
    break和continue的区别
    php目录函数
    mysql语法
    php中怎么导入自己写的类
    截取文件后缀名
  • 原文地址:https://www.cnblogs.com/MIKEHRO/p/11830619.html
Copyright © 2020-2023  润新知