首页 > 试题广场 >

编一个程序,它能读入两个正整数(第一个:n进制的基数(2-1

[问答题]
编一个程序,它能读入两个正整数(第一个:n进制的基数(2-19)第二个:要转换的十进制数),并输出这个正整数的2-19进制形式,依次用A、B、C、D、E、F、G、H、I表示10、11、12、13、14、 15、16、17、18。如输入为15 56时,输出为3B。
推荐
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        char[] charaters = {
             '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B', '             C','D', 'E', 'F', 'G', 'H', 'I'};
     Scanner in = new Scanner(System.in);
     StringBuffer ans = new StringBuffer("");
     int base = 0;
     int digit = 0;
     base = in.nextInt();
     digit = in.nextInt();
     if ((2 <= base) && (base <= 18)) {
         while (digit != 0) {
             ans.append(charaters[digit % base]);
             digit /= base;
         }
         ans = ans.reverse();
         System.out.println(ans.toString());
     } else {
         System.out.println("Input Error!");
     }
    }
 }
编辑于 2015-02-09 21:07:33 回复(0)
说实话考这样的题就离谱,你怎么不直接发一份编程题过来呢?
//产品思维啊,总不至于真要产品去敲代码吧(虽然代码比较简单)
public static void main(String[] args) {
    //输入需要开发自行优化,是否可以采用流方式等。
    Scanner sc = new Scanner(System.in);
    int radix = sc.nextInt();
    //传入的正整数是否会溢出,需要考虑产品是否会传入溢出级别的整数
    int num = sc.nextInt();
    //实现直接调用API实现,如果考场上真不会,可以抽出来作为函数用伪代码实现
    //这里直接给出正确实现
    String s = Integer.toString(num,radix);
    //(由于java自带API只能变成小写字母,需要再调用API全部转大写)
    s=s.toUpperCase();
    //打印输出
    System.out.println(s);
     //测试代码,以及开发调试、防bug用的try-catch结构略。
}
编辑于 2021-09-29 11:35:33 回复(0)
# python

re = ''
def transform(nary, num):
    correspond = {i : str(i) for i in range(10)}
    letter = {i : chr(ord('A')+ i - 10) for i in range(10,19)}
    correspond.update(letter)
    def reminder(nary, num):
        global re
        if (num == 0):
            return
        re = re + correspond[num % nary]
        reminder(nary, int(num / nary))
        
    reminder(nary, num)
    
    result = ''
    result = result + re[::-1]
    return result





发表于 2021-01-23 16:44:18 回复(0)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//核心代码
void converPrint(unsigned int base,unsigned int num)
{
    if(base<2 || base>19)    return;
    string str;
    while(num){
         char c;
         c = num%base>9?num%base-10+'A':num%base+'0';
         num /= base;
         str += c; 
    }
    reverse(str.begin(),str.end());
    cout<<str<<endl;
}
//测试代码
int main()
{
    converPrint(19,18);
    return 0;
}

发表于 2017-06-06 17:18:03 回复(0)
string convert(unsigned int base,unsigned int num)
{
    if(base<2||base>19)
        return NULL;
    string ans;
    while(num)
    {
        unsigned int yushu=num%base;
        char c=yushu<10?yushu+'0':yushu-10+'A';
        ans+=c;
        num=num/base;
    }
    reverse(ans.begin(),ans.end());
    return ans.size()==0?"0":ans;
}

发表于 2015-08-31 10:51:26 回复(0)
import java.util.Scanner; public class Trans { private static int cardinalNum;//基数 private static int number; private static String result = "";//结果 public static void main(String[] args) { Trans t = new Trans(); t.init(); t.count(); System.out.println(result); } public void init(){ Scanner sc = new Scanner(System.in); System.out.println("输入基数:"); cardinalNum = sc.nextInt(); System.out.println("输入数字:"); number = sc.nextInt(); } public void count(){ String reminder = ""; while (number > 0){ reminder = "" + number % cardinalNum; if(Integer.parseInt(reminder) >= 10) { if(reminder.equals("10")) reminder = "A"; else if (reminder.equals("11")) reminder = "B"; else if (reminder.equals("12")) reminder = "C"; else if (reminder.equals("13")) reminder = "D"; else if (reminder.equals("14")) reminder = "E"; else if (reminder.equals("15")) reminder = "F"; else if (reminder.equals("16")) reminder = "G"; else if (reminder.equals("17")) reminder = "H"; else if (reminder.equals("18")) reminder = "I"; else{ System.out.println("ERROR"); return; } } result = reminder + result; number = number / cardinalNum; } } public Trans() { } }
发表于 2014-09-25 10:05:49 回复(1)