美文网首页
人大信息学院2017年夏令营机试题目(一)

人大信息学院2017年夏令营机试题目(一)

作者: 一个Enchancer | 来源:发表于2018-04-22 11:21 被阅读0次

前言
题目来自:https://wenku.baidu.com/view/943af216ba68a98271fe910ef12d2af90242a8b2.html
自己试着写的也不知道其他测试用例是不是都能过...欢迎讨论。
(PS:这里我没控制范围什么的...主要想做一下算法部分)

第一题:进制转换
题面:给出一个十进制非负整数n,请将该数转换为r进制数并输出。 0≤n≤1000000000,2≤r≤16。超出十进制的,字母大写输出。输入共一行,输出共一行。
输入样例:126 16
输出样例:7E

解:

#include"stdio.h"
int trans1(int num,int r){
    if (num>=r)
        return num%r+trans1(num/r,r)*10;
    else 
        return num;
}
char check(int num){
    if (num==10)
        return 'A';
    else if (num==11)
        return 'B';
    else if (num==12)
        return 'C';
    else if (num==13)
        return 'D';
    else if (num==14)
        return 'E';
    else if (num==15)
        return 'F';
    else
        return num;
}
void trans2(int num,int r){
    if (num>=r){
        trans2(num/r,r);
        if (check(num%r)<10)
            printf("%d",check(num%r));
        else
            printf("%c",check(num%r));
    }
    else 
        if (check(num)<10)
            printf("%d",check(num));
        else
            printf("%c",check(num));
}
void main(){
    int num;
    int r;
    int out;
    scanf("%d %d",&num,&r);
    if(r<10){
        out=trans1(num,r);
        printf("%d",out);
    }
    else
        trans2(num,r);
    system("pause");

}

结果:


image.png image.png

相关文章

网友评论

      本文标题:人大信息学院2017年夏令营机试题目(一)

      本文链接:https://www.haomeiwen.com/subject/iziqlftx.html