• 第二次博客园作业:函数+进制转换器v1.0beta


    一.程序运运行截图。

     

    二.函数介绍。

    1.

     1 void twotoeightandten(int x) {
     2     int c,y,s10=0,s8=0,i,l;
     3     y=x;
     4     i=0;
     5     l=0;
     6         //二进制转为十进制
     7     while(y!=0){
     8         c=y%10;
     9             //判断输入是否为二进制
    10         if(c>=2)
    11             l++;
    12         y/=10;
    13         s10=s10+c*pow(2,i);
    14         i++;
    15     }
    16     y=s10;
    17     i=0;
    18         //十进制转为八进制
    19     while(y!=0){
    20         c=y%8;
    21         y/=8;
    22         s8=s8+c*pow(10,i);
    23         i++;
    24     }
    25     if(l==0){
    26         printf("二进制转为
    "); 
    27         printf("八进制:%d
    十进制:%d
    ",s8,s10);
    28     } 
    29     else 
    30         //若输入数不为二进制
    31         printf("这个输入是错的鸭");
    32 }

    将二进制转化为十进制,再将十进制转化为二进制达到效果。

    2.

    void eighttotwoandten(int x) {
            //将八进制转化为二进制和十进制
        int c,y,s10=0,s2=0,i,l;
        y=x;
        i=0;
        l=0;
            //将八进制转化为十进制
        while(y!=0){
            c=y%10;
            if(c>=8)
                l++;
            y/=10;
            s10=s10+c*pow(8,i);
            i++;
        }
        y=s10;
        i=0;
            //将十进制转化为二进制
        while(y!=0){
            c=y%2;
            y/=2;
            s2=s2+c*pow(10,i);
            i++;
        }
        if(l==0){
            printf("八进制转为
    "); 
            printf("二进制:%d
    十进制:%d
    ",s2,s10);
        } 
        else
            //若输入数不为八进制
            printf("这个是错的鸭");
    }

    将八进制转化为十进制,再将十进制转化为二进制达到效果。

    3.

    void tentotwoandeight(int x) {
            //将十进制转化为二进制和八进制
        int c,y,s2=0,s8=0,i;
        y=x;
        i=0;
            //将十进制转化为二进制
        while(y!=0){
            c=y%2;
            y/=2;
            s2=s2+c*pow(10,i);
            i++;
        }
        y=x;
        i=0;
            //将十进制转化为八进制
        while(y!=0){
            c=y%8;
            y/=8;
            s8=s8+c*pow(10,i);
            i++;
        }
        printf("十进制转为
    ");
        printf("二进制:%d
    八进制:%d
    ",s2,s8);
    }

    将十进制转化为二进制和八进制,此代码不需要判断是否为十进制

    三.main函数

    #include<stdio.h>
    #include<math.h>
    void twotoeightandten(int x) ;//二进制转化为八进制和十进制函数
    void eighttotwoandten(int x) ;//八进制转化为二进制和十进制函数
    void tentotwoandeight(int x) ;//十进制转化为二进制和八进制函数
    int main()
    {
        int jzs, x;
        printf("输入'2'为二进制;输入'8'为八进制;输入'10'为十进制
    输入进制数;");
        //输入进制数
        scanf("%d", &jzs);
        printf("输入一个数:");
        //输入被转化的数
        scanf("%d", &x);
        //判断进制数
        if (jzs == 2) {
            twotoeightandten(x);
        }
        else if (jzs == 8) {
            eighttotwoandten(x);
        }
        else if (jzs == 10) {
            tentotwoandeight(x);
        }
        return 0;
    }

    四.思维导图

    五.碰到的问题:

    如何判断二进制,八进制,十进制;

    解决方案:

    通过取余判断每一位数是否小于进制数。是,则输出;出现一位以上不符合条件,则提示输入错误。

    进制如何转换

    解决方案:

    思路:先将二进制或八进制转化为十进制,再将十进制转化为二进制和八进制。

    六.代码互评。

    void change(int n,char a[],int m,int count)//将用户输入的数先转化成十进制数,在转化成想要转化成的进制数 
    {    
        int i,j,k=0,num,sum=0,c;
        char b[1001];
        for(i=0;a[i]!='';i++)
        {
            if(a[i]>='0'&&a[i]<='9')num=a[i]-'0';
            else
                num=a[i]-'a'+10;
            sum=sum*n+num;
        }
        while(sum)
        {
            c=sum%m;
            b[k++]="0123456789abcdef"[c];
            sum=sum/m;
        }
        i=0;
        for(i=k-1;i>=0;i--)
        {
            if(b[i]>='0'&&b[i]<='9')printf("%d",b[i]-'0');
            else
                printf("%c",b[i]);
        }
        printf("
    "); 

    将十进制转化为十六进制非常巧妙,利用取余,判断取余数并将相应的十六进制数字及字母存入存入数组中,最后利用数组表示出十六进制,非常巧妙。

    七.总结

    1.对于进制转换及其含义有了更深刻的了解,各进制转为十进制都有规律,可以举一反三,而十进制转为其他进制也有规律且较为容易。

    2.学到了很多,代码的简洁,清晰易懂,以及运行过程更能被理解,让使用者了然也是非常重要的。

     

  • 相关阅读:
    rt_list_entry() 函数
    替换空格
    跳台阶
    斐波那契数列
    基于5221码的同步十进制加法计数器
    强连通分量+Tarjia+缩点
    次小生成树
    差分约束
    P1547 Out of Hay
    P1197 [JSOI2008]星球大战
  • 原文地址:https://www.cnblogs.com/ssp1781554770/p/11824353.html
Copyright © 2020-2023  润新知