小白编程题:十进制转R进制

描述

输入两个十进制数N,R。将十进制数N转换成R进制数输出。

输入

输入数据包含多个测试实例,对于每组测试用例:

输入两个整数N (|N| <= 108) 和 R(2 <= R <= 16, R ≠ 10)。

输出

输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

输入样例 1 

7 2

23 12

-4 3

输出样例 1

111

1B

-11

//ASCII码思路重构进制转换(二)
#include<stdio.h>
char itoc(int n){
    if(n>=0&&n<10)
        return n+48;
    else if(n>=10&&n<=16)
        return n+55;
    else
        return 0;
}
int main(){
    int n,r;
    while(scanf("%d %d",&n,&r)!=EOF){
        int a[100]={0};
        int temp;
        if(n>0){
            temp=n;
        }
        else if(n<0){
            temp=-n;
        }
        else{
            printf("0\n");
            continue;
        }
        int i=0;
        for(;temp!=0;i++){
            a[i]=temp%r;
            temp/=r;
        }
        char m[100]={'\0'};
        for(int t=i-1,z=0;t>=0;t--,z++){
            m[z]=itoc(a[t]);
        }
        if(n<0){
            printf("-");
        }
        puts(m);
    }
    return 0;
}

posted @ 2023-11-17 07:56  椰萝Yerosius  阅读(72)  评论(0)    收藏  举报  来源