zoukankan      html  css  js  c++  java
  • 第二次博客园作业:函数+进制转换器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.学到了很多,代码的简洁,清晰易懂,以及运行过程更能被理解,让使用者了然也是非常重要的。

     

  • 相关阅读:
    Encryption (hard) CodeForces
    cf 1163D Mysterious Code (字符串, dp)
    AC日记——大整数的因子 openjudge 1.6 13
    AC日记——计算2的N次方 openjudge 1.6 12
    Ac日记——大整数减法 openjudge 1.6 11
    AC日记——大整数加法 openjudge 1.6 10
    AC日记——组合数问题 落谷 P2822 noip2016day2T1
    AC日记——向量点积计算 openjudge 1.6 09
    AC日记——石头剪刀布 openjudge 1.6 08
    AC日记——有趣的跳跃 openjudge 1.6 07
  • 原文地址:https://www.cnblogs.com/ssp1781554770/p/11824353.html
Copyright © 2011-2022 走看看