您的位置:首页 > 其它

进制转换

2016-12-13 22:03 211 查看
题目:请自定义函数,并根据用户选择进行数据进制转换(注意完善相应的用户提示),十六进制数和十进制数互换,二进制数和十进制数互换,八进制数和十进制数互换。

 

#include<stdio.h>

#include<string.h>

/*  函数功能:显示主页面

**  入口参数:无

**  出口参数:无

*/

void show ()

{

    printf("**************************************\n");

    printf("十六进制 <=>  十进制       ----1\n");

    printf("八进制     <=>  十进制       ----2\n");

    printf("二进制     <=>  十进制       ----3\n");

    printf("十进制     <=>  十六进制   ----4\n");

    printf("十进制     <=>  八进制       ----5\n");

    printf("十进制     <=>  二进制       ----6\n");

    printf("请选择您要转换的进制:\n");

    printf("**************************************\n");

}

/*    函数功能:根据选择调用不同的函数

**    入口参数:int n  用户选择

**    出口参数:无

*/

void zhuanhuan (int n)

{

    if(n==1)

    {

        shiliushi();

    }

    else if(n==2)

    {

        bashi();

    }

    else if(n==3)

    {

        ershi ();

    }

    else if(n==4)

    {

        shishiliu();

    }

    else if(n==5)

    {

        shiba();

    }

    else if(n==6)

    {

        shier ();

    }

}

/*    函数功能:十六进制转换为十进制

**    入口参数:无

**    出口参数:无

*/

void shiliushi ()

{

    int n;

    scanf("%x",&n);

    printf("十六进制%x转换为十进制%d\n",n,n);

}

/*   函数功能:八进制转换为十进制

**   入口参数:无

**   出口参数;无

*/

void bashi ()

{

    int n;

    scanf("%o",&n);

    printf("八进制%o转换为十进制%d\n",n,n);

}

/*   函数功能:二进制转换为十进制

**   入口参数:无

**   出口参数:无

*/

void ershi ()

{

    char n[1000];

    char c;

    int i,j,len,sum=0,mul=1;

    getchar();

    gets(n);

    len=strlen(n);

    for(i=0,j=len-1;i<j;i++,j--)

    {

        c=n[i];

        n[i]=n[j];

        n[j]=c;

    }mul=0;

    for(i=0;i<len;i++)

    {

        if (i==0)

        {

            if(n[i]=='0')

                break;

            sum += 1;

        }

        else

        {

            mul=1;

            for(j=0;j<i;j++)

            {

                if(n[i]=='0')

                {

                    mul=0;

                    break;

                }

                mul
bc8b
*= 2;

            }

            sum +=mul;

        }

    }

    printf("二进制转换为十进制为:%d\n",sum);

}

/*    函数功能:十进制转换为十六进制

**   入口参数:无

**   出口参数:无

*/

void shishiliu()

{

    int n;

    scanf("%d",&n);

    printf("十进制%d转换为十六进制%x\n",n,n);

}

/*   函数功能:十进制转换为八进制

**   入口参数:无

**   出口参数:无

*/

void shiba()

{

    int n,m;

    scanf("%d",&n);

    printf("十进制%d转换为八进制%o\n",n,n);

}

/*    函数功能:十进制转换为二进制

**   入口参数:无

**   出口参数:无

*/

void shier()

{

    int i,n,m,j;

    int a[1000]={0};

    scanf("%d",&n);

    m=n;

    for(i=0;n!=0;i++)

    {

         a[i] =n%2;

         n /=2;

    }

    j=i;

    printf("十进制%d转换为二进制: \n",m);

    for(i=j-1;i>=0;i--)

    {

        printf("%d",a[i]);

    }

    printf("\n");

}

int main()

{

    int n;

    show();

    system("color 2");

    while(scanf("%d",&n)!=EOF)

    {

        zhuanhuan (n);

        getchar();

        show();

    }

    return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: