计算器

#include <stdio.h>
#include <math.h>
void p1(int n)//10#->2#
{
    int a[10],i=0;


    while(n!=0)
    {
        a[i++]=n%2;
        n=n/2;
    }
    for(i=i-1; i>=0; i--)
        printf("%d",a[i]);
    printf("
");
}


void p2(int n)//10#->8#
{
    int a[10],i=0;


    while(n!=0)
    {
        a[i++]=n%8;
        n=n/8;
    }
    for(i=i-1; i>=0; i--)
        printf("%d",a[i]);
    printf("
");
}


void p3(int n)//10#->16#
{
    int a[10],i=0;


    while(n!=0)
    {
        a[i++]=n%16;
        if(a[i-1]>=10)
            a[i-1]=a[i-1]-10+65;
        n=n/16;
    }
    for(i=i-1; i>=0; i--)
        if(a[i]>=10)
            printf("%c",a[i]);
        else
            printf("%d",a[i]);
    printf("
");
}


//////////////////////////////////////////////
void q1()//2#->10#
{
    int i,j,sum=0,n;
    char a[20];
    printf("请入入你要转换的数:
");
    scanf("%s",&a);
    for(i=0; a[i]!=''; i++)
    {
        sum=sum*2+a[i]-'0';
    }
    printf("%d
",sum);


}
void q2()//8#->10#
{


    int i=0,j,sum,a[10],n;
    printf("请入入你要转换的数:
");
    scanf("%d",&n);
    while(n!=0)
    {
        a[i++]=n%10;
        n=n/10;
    }


    sum=0;
    j=i;
    for(i=0; i<j; i++)
        sum+=(int)pow(8,i)*a[i];


    printf("%d
",sum);
}


void q3()//16#->10#
{
    int i=0,sum=0;
    char b[20];
    printf("请输入要转换的数:
");
    scanf("%s",&b);


    for(i=0; b[i]!=''; i++)
    {
        if(b[i]>='A'&&b[i]<='F')
            sum=sum*16+b[i]-55;
        else
            sum=sum*16+b[i]-'0';
    }


    printf("%d
",sum);
}
///////////////////////////////////////////////////
int main()
{
    int n,m,a;
    printf("---------------计算器------------------
");
    printf("请选择:
");
    printf("1、10#->2#、10#->8#、10#->16#
2、2#->10#、8#->10#、16#->10#
");
    scanf("%d",&n);
    if(n==1)
    {
        printf("请选择:
1、10#->2#	2、10#->8#	3、10#->16#
");
        scanf("%d",&m);
        printf("请输入一个十进制数:
");
        scanf("%d",&a);
        switch(m)
        {
        case 1:
            p1(a);
            break;
        case 2:
            p2(a);
            break;
        case 3:
            p3(a);
            break;
        default:
            printf("输入错误!
");
        }
    }
    else if(n==2)
    {
        printf("请选择:
1、2#->10#	2、8#->10#	3、16#->10#
");
        scanf("%d",&m);
        switch(m)
        {
        case 1:
            q1();
            break;
        case 2:
            q2();
            break;
        case 3:
            q3();
            break;
        default:
            printf("输入错误!
");
        }
    }
    else
        printf("输入错误!
");


    return 0;
}

原文地址:https://www.cnblogs.com/qie-wei/p/10160273.html