• 【杭电】[2031]进制转换


    这里写图片描述
    这里写图片描述

    进制转换问题
    有点麻烦
    主要是因为涉及到了超过10进制的数据
    需要按照
    10-A 11-B 12-C 13-D 14 E 15 F
    这种来输出
    不过掌握了用数组储存的基本思路
    还是可以比较轻松解决的

    #include<stdio.h>
    #include<string.h>
    int Rt(int a[],int N,int R) {
        int i;
        for(i=0; N>=R; i++) {
            a[i]=N%R;
            N=N/R;
        }
        a[i]=N;
        return i;
    }
    int main() {
        int x,i,j,N,R;
        int a[1000];
        char s[1000];
        while(scanf("%d %d",&N,&R)!=EOF) {
            memset(a,0,sizeof(a));
            memset(s,0,sizeof(s));
            if(N>=0)
                x=1;
            else {
                x=0;
                N=-N;
            }
            i=Rt(a,N,R);
            for(j=0; j<=i; j++) {
                if(a[i-j]==10)
                    s[j]='A';
                else if(a[i-j]==11)
                    s[j]='B';
                else if(a[i-j]==12)
                    s[j]='C';
                else if(a[i-j]==13)
                    s[j]='D';
                else if(a[i-j]==14)
                    s[j]='E';
                else if(a[i-j]==15)
                    s[j]='F';
                else {
                    s[j]=a[i-j]+'0';
                }
            }
            if(x==0)
                printf("-");
            printf("%s\n",s);
        }
        return 0;
    }

    ======20160531补充=============
    使用递归方式解决
    除k取余倒序输出的过程
    (递归函数的机制是优先运行完内嵌)
    (也就是深度优先)
    再加上用字符数组来保存对应关系
    可以使代码非常简洁

    #include<stdio.h>
    #include<string.h>
    char mi[]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    void f(int m,int k) {
        if(m<k) {
            printf("%c",mi[m]);
            return ;
        } else {
            f(m/k,k);
            printf("%c",mi[m%k]);
        }
    }
    int main() {
        int n,R;
        while(scanf("%d %d",&n,&R)!=EOF) {
            if(n<0) {
                printf("-");
                n=-n;
            }
            f(n,R);
            printf("\n");
        }
        return 0;
    }

    题目地址:【杭电】[2031]进制转换

  • 相关阅读:
    Windows7发生VS2005无法调试Web项目《转》
    压缩SQL Server 2005指定数据库文件和日志
    .net开源工具Zed
    oracle 开发手册
    sql server 日期函数第一天
    相对应的汉语拼音首字母串<收藏>
    oracle 触发器使用《收藏》
    Oracle三种集合数据类型的比较
    sql server 系统表
    chart
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12570091.html
Copyright © 2020-2023  润新知