華為筆試——C++進位轉換

来源:https://www.cnblogs.com/ljy1227476113/archive/2018/09/10/9623660.html
-Advertisement-
Play Games

題目:2-62進位轉換 題目介紹:輸入一個n1 進位的整數(包括負數),將其轉換成n2 進位,其中n1 、n2 的範圍是 [ 2,62 ] 。每個數字的範圍是0-9、a-z、A-Z。不用考慮非法輸入。 輸入: n1 n2 n1 進位整數 輸出: n2 進位整數 例: 輸入: 8 16 -135246 ...


題目:2-62進位轉換

題目介紹:輸入一個n1 進位的整數(包括負數),將其轉換成n2 進位,其中n1 、n2 的範圍是 [ 2,62 ] 。每個數字的範圍是0-9、a-z、A-Z。不用考慮非法輸入。

輸入:

n1 n2

n1 進位整數

輸出:

n2 進位整數

例:

輸入:

8 16

-1352460

輸出:

-5d530

分析:

這道題目需要考慮幾點:負整數的輸入;將輸入的n1 進位的數轉換成10 進位的數,再用長除法將這個10 進位的數轉換成 n2 進位的數;a-z和A-Z與其代表的整數的相互轉換(char 類型的ASC||碼與整數的變換)。

代碼如下:

 1 #include <iostream>
 2 #include <string>
 3 #include <math.h>
 4 #include <conio.h>
 5 using namespace std;
 6 int main()
 7 {
 8     string str;
 9     int size;
10     int i = 0;
11     int result = 0;
12     int n = 0;
13     int r[10];//長除法
14     char q[10];
15     int n1, n2;
16     cout << "n1.n2" << endl;
17     cin >> n1 >> n2;
18     cout << "str" << endl;
19     cin >> str;
20     size = str.size();
21     char *p = new char[size];
22     strcpy(p, str.c_str());
23     if (p[0] == '-') { p[0] = '0'; }//考慮到負數
24     for (i = 0; i < size; i++)
25     {
26         if (p[i] >= 'a'&&p[i] <= 'z')
27         {
28             p[i] = p[i] - 39;
29         }
30         if (p[i] >= 'A'&&p[i] <= 'Z')
31         {
32             p[i] = p[i] + 19;
33         }
34     }//將a-z的字元意義化a=10、···
35     for (i = 0; i < size; i++)
36     {
37         result += int(p[i] - 48) * int(pow(n1, size -
38 
39             1 - i));
40     }
41     cout << result << endl;//計算十進位值
42     while ((result / n2) >= n2)
43     {
44         r[n] = result % n2;
45         result = result / n2;
46         n++;
47     }
48     r[n] = result % n2;
49     n++;
50     r[n] = result / n2;//取餘取除值
51     for (i = 0; i < (n + 1); i++)
52     {
53         if (r[i] >= 10&&r[i]<=35) { q[i] = r[i]+87; }//a-z的輸出轉換
54         else if (r[i] >=36&&r[i]<=61) { q[i] = r[i]+29; }//A-Z的輸出轉換
55         else { q[i] = char(r[i] + 48); }//0-9轉換
56     }
57     if (p[0] == '0') { cout << "-"; }//負數還原
58     for (i = 0; i < (n + 1); i++)
59     {
60         cout << q[n - i];
61     }
62 }

結果如圖:其中輸出的第二行為10 進位的該數。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇博客有人問我,Springcloud系列會不會連載 ,大家可以看到我的標簽分類里已經開設了SpringCloud專題,所以當然會連載啦,本人最近也是買了本書在學習SpringCloud微服務框架,知識會隨時分享的!!!!!!!!!!!!!!!!!!!!! 二.服務消費者 在微服務架構中,業務都 ...
  • c/c++ 數組 知識點 1,數組的聲明和初始化,對應代碼里的test1和test2 2,char數組,對應代碼里的test3 3,數組不可以拷貝和複製,對應代碼里的test4 4,指針數組, 數組的指針, 數組的引用,指針數組的引用,對應代碼里的test5 5,數組的範圍for用法,對應代碼里的t ...
  • 觀察者模式 一、什麼是觀察者模式?   觀察者模式(別名 發佈 訂閱)是軟體設計模式的一種。 觀察者模式屬於行為型模式 。(行為型模型 特別關註對象之間的通信)   觀察者模式(Observer)完美的將觀察者和被觀察的對象分離開。 觀察者設計模式定義了對象間 ...
  • 本文內容為我在網上搜集Spring AOP資料的彙總、摘抄。 AOP是一種編程思想,其對不同對象進行了橫向的抽象,將不同對象的、和主流程無關的公共邏輯抽象出來以方便維護。AOP的實現基礎為AOP動態代理,動態代理又可以由JDK動態代理和CGLIB實現。Spring中AOP的編程模型是定義組件、定義... ...
  • 在網上搜索了很多資料都不行,要麼就是不能發送數據,要麼就不能接收數據,使用如下的方法可以接收數據,一個一個位元組接收; 有部分限制是需要明確知道要接收多少個位元組,否則容易出現接收異常。。 var testbutton = doc.getElementById('testsocket'); testbu ...
  • 封裝類的由來: 為了將基本類型以對象行使存在,java對八個基本類型提供了引用類型,這八個引用類型稱為基本類型的“包裝類”。 八個基本類型對應的封裝類: int --> Integer char --> Character byte --> Byte float --> Float double - ...
  • 複雜鏈表的複製: 1.在舊鏈表中每個結點的後面複製出一個結點,隔代 2.把舊鏈表的隨機指向部分,複製到新添加的結點上 3.把新結點從舊鏈表中拆分出來成新鏈表 1. linklist=head while linklist!=null node=new Node() node->next=linkli... ...
  • 基本數據類型 一、整數(整形) 值域 1、 byte [-128,127] 2、short [-32768,32767] 3、int [-2147483648,2147483647] 4、long [-922372036854775808,9223372036854775807] 二、浮點數(浮點型 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...