面試題:輸入一個十進位制整數,將這個數字轉化成對應的十五進位制數(在十五進制中,A表示10,B表示11,C表示12,D表示13, E表示14),請寫入轉換程式。例如:235表示為10A;
如上是本人一位朋友的公司出的研發小測試,小朋友是一臉懵逼啊!
分析:進位制轉換思路:10進位制除以15商和餘數,反覆拿商除以15獲得商和餘數,類推,知道商為0,停止;
以235表示為10A為例分析:
235/15 = 15 餘數10
15/15 = 1 餘數 0
1/15 = 0 餘數 1
得到資料10, 0, 1, 反序結果為1, 0, 10, 對比結果: 1-》1, 0-》0, 10-》A, 所以235表示的十五進位制數為:10A;
具體實現如下:
@Test public void test() { Scanner scanner = new Scanner(System.in); System.out.println("請輸入十進位制數字:"); /** * Integer.parseInt(scanner.next(), 10); 10 代表的預設是10進位制的 * Character.MIN_RADIX=2和Character.MAX_RADIX=36 * parseInt(String s, int radix)引數中radix的範圍是在2~36之間,超出範圍會拋異常。其中s的長度也不能超出7,否則也會拋異常。 */ Integer in = Integer.parseInt(scanner.next(), 10); List<Object> list = new ArrayList<Object>(); while (true) { list.add(in % 15); // 取餘數 in = in / 15; // 取餘數 if (in == 0) { // 停止迴圈 break; } } StringBuffer str = new StringBuffer(); // 拼接字串 // 倒排 for (int i = list.size() - 1; i >= 0; i--) { int number = (int) list.get(i); if (number == 10) { str.append("A"); } else if (number == 11) { str.append("B"); } else if (number == 12) { str.append("C"); } else if (number == 13) { str.append("D"); } else if (i == 14) { str.append("E"); } else { str.append(number); } } System.out.println(str); //關流 scanner.close(); }
parseInt(String s, int radix)原始碼:
if (s == null) { throw new NumberFormatException("null"); } if (radix < Character.MIN_RADIX) { throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX"); } if (radix > Character.MAX_RADIX) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } /** * The minimum radix available for conversion to and from strings. * The constant value of this field is the smallest value permitted * for the radix argument in radix-conversion methods such as the * {@code digit} method, the {@code forDigit} method, and the * {@code toString} method of class {@code Integer}. * * @see Character#digit(char, int) * @see Character#forDigit(int, int) * @see Integer#toString(int, int) * @see Integer#valueOf(String) */ public static final int MIN_RADIX = 2; /** * The maximum radix available for conversion to and from strings. * The constant value of this field is the largest value permitted * for the radix argument in radix-conversion methods such as the * {@code digit} method, the {@code forDigit} method, and the * {@code toString} method of class {@code Integer}. * * @see Character#digit(char, int) * @see Character#forDigit(int, int) * @see Integer#toString(int, int) * @see Integer#valueOf(String) */ public static final int MAX_RADIX = 36;
相關推薦
面試題:輸入一個十進位制整數,將這個數字轉化成對應的十五進位制數(在十五進制中,A表示10,B表示11,C表示12,D表示13, E表示14),請寫入轉換程式。例如:235表示為10A;
如上是本人一位朋友的公司出的研發小測試,小朋友是一臉懵逼啊! 分析:進位制轉換思路:10進位制除以15商和餘數,反覆拿商除以15獲得商和餘數,類推,知道商為0,停止; 以235表示為10A為例分析: 235/15 = 15 餘數10 15/15 = 1 餘數
網易筆試題:輸入一個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。
解題思路: **找到數學規律。n以i為開頭的j個整數的和為i*j+j*(j-1)/2;判斷輸入的整數是否和計算結果相同。 如果相同則迴圈輸出以i為開頭的j個整數。 這個題目給我最大的啟示就是要學會用數學的方法來解決問題,在此之前我一直希望通過一種遞
輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。 思考: 如何將一個十進位制數轉化成一個8進位制和16進位制數。
1,輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。思考: 如何將一個十進位制數轉化成一個8進位制和16進位制數。 #include<stdio.h> #define N 20 int main() { int a,n,c,k,i; cha
N的階乘:輸入一個正整數N,輸出N的階乘
輸入描述: 正整數N(0<=N<=1000) 輸出描述: 輸入可能包括多組資料,對於每一組輸入資料,輸出N的階乘 輸入例子: 4 5 15 輸出例子: 24 120 13076743680
大一上C語言期末複習:輸入一個正整數,將其分解為質因數,如90=2*3*3*5
//輸入一個正整數,將其分解為質因數,如90=2*3*3*5 #include <stdio.h> int main() { int n,i; while(scanf("%d",&n)) { if(n==1) { printf("n=
python程式設計:輸入一個正整數判斷它是不是素數
輸入一個正整數判斷它是不是素數 from math import sqrt def main(): num = int(input('請輸入一個正整數: ')) end = int(sqrt(num)) is_prime = T
求接題目:輸入一個字符串輸出大小寫數字及其他字符的個數並逆序輸出
v2v SQ 逆序輸出 Go 大小寫 target clu 數字 targe 9wwwp0b5mw啥睪約抑汕丶防內肯勸《http://weibo.com/p/230927987600061628162048》 rvzxpb9vfd腫氨撩都幣渦綽腔腳備《http://wei
HTTP請求行中包含哪些內容?A、請求方法 B、資源名稱 C、版本號 D、狀態程式碼
答案:ABC解析:Http請求是指從客戶端到伺服器端的請求訊息。該請求訊息包括,在訊息首行中,對資源的請求方法、資源的識別符號及使用的協議。HTTP請求資訊由3部分組成:l 請求方法URI協議/版本l 請求頭(Request Header)l 請求正文HTTP響應HTTP應
劍指offer第32題JS演算法:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次
題目:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次 這是我某一次去朋友公司面試試水時出的面試題,結果給我五分鐘我寫了個for迴圈的方法,被狠狠鄙視/哭笑不得 結果回來後好奇就跟同事
C#面試題:輸入一個長度100的數字字串,判斷是否能被7整除
輸入一個長度為100的數字字串,首字元不能是0,判斷是否能被7整除。 思路:把字串中各個位數字拿出來與7取餘,如果最後為0,表示可以整除,不為0表示不能整除。 例如:504:5%=5,50%7=1,14%7=0等於0。那麼504能被7整除。 21
11. 微軟面試題:輸入一個單向連結串列,輸出該連結串列中倒數第k個結點。連結串列的倒數第0個結點為連結串列的尾指標
題目:輸入一個單向連結串列,輸出該連結串列中倒數第k個結點。連結串列的倒數第0個結點為連結串列的尾指標。 分析: 單鏈表只能向後遍歷,不能向前遍歷,尾指標好找,倒數第K個不能從尾指標向前找。 倒的不好找,正的好找,我們只需要知道連結串列的總長度,就可以知道正數第幾個節點(
面試題:輸入一個整數,輸出該整數二進位制中1的個數。
程式碼:C語言 //輸入一個整數,輸出該整數二進位制中1的個數。其中負數用補碼錶示。 //左移運算子是用來將一個數的各二進位制位全部左移若干位。相當於乘法運算,表示為"<<" //右移運算子是用來將一個數的各二進位制位全部右移若干位。相當於除
三種方式求: 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示
情況 temp 進制數 二進制表示 pac print 類型 solution 方式 package com.example; public class Solution { /* * 轉化成2進制數計算 */ public int NumberOf1(int n) {
C++入門篇——輸入一個整數並將這個整數分別以八進位制,十進位制,十六進位制輸出;同時輸入一個布林值並且以布林值的方式打印出來
C++入門篇 輸入一個整數並將這個整數分別以 八進位制,十進位制,十六進位制輸出; 同時輸入一個布林值並且以 布林值的方式打印出來 注意:執行的時候需要按 ctrl鍵+F5 如果想只按F5就執行,在return 0;前面加一段程式碼: system("pause"); 同時需要
# 從鍵盤輸入一個正整數,用2的冪次方的形式輸出。約定冪次方用括號來表示,即表示為2(b),b=1時,冪省略。例如139=2^7+2^3+2^1+2^0,即:2(7)+2(3)+2+2(0)
樣例輸入: 402 樣例輸出: 2(8)+2(7)+2(4)+2 要求:冪不能重複,如:139=26+26+23+21+20(出現了2個6次方) 參考 C 程式碼: #include<stdio.h> #include<stdlib.h>
【每日面試題】給定一個字串,求出其最長的重複子串
題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) { if(str==NULL) return; int max=0; int first=0; int
Java中輸入一個十進位制數,如何轉換為二進位制數
方法一:利用Java API直接轉換 十進位制數如何轉換為二進位制數,這在Java API 中有一個方法,Integer.toBinaryString( ) 括號裡面寫上你要轉換的十進位制數,這樣可以直接轉換。例如: public static void
【面試題】實現一個棧,要求Push(入棧),Pop(出棧),Min(返回最小值的操作)的時間複雜度為O(1)
問題描述:實現一個棧,要求Push(入棧),Pop(出棧),Min(返回最小值的操作)的時間複雜度為O(1) 分析問題:要記錄從當前棧頂到棧底元素的最小值,很容易想到用一個變數,每push一個元素更新一次變數的值。那麼問題來了,當執行pop操作時,上一次的最小值就找不到
輸入一個十進位制正整數,將該數轉換成n進位制數;
#include<stdio.h> #define N 20 int main() { int a,n,c,k,i; char str[N]; printf("輸入要轉換的數a\n"); scanf("%d",&a); printf("輸入要轉換為的進位制n\n"); scanf("
Java演算法總結:輸入一個整數,求該整數的二進位制表示中有多少個1
求一個整數的二進位制中1的個數。 題目:輸入一個整數,求該整數的二進位制表達中有多少個1。例如輸入10,由於其二進位制表示為1010,有兩個1,因此輸出2。 分析:這是一道很基本的考查位運算的面試題。包括微軟在內的很多公司都曾採用過這道題。