針對做題的進製轉換問題的一些解決方案

2021-08-19 01:42:44 字數 2369 閱讀 3913

1.itoa 函式

itoa()是廣泛應用的非標準c語言和c++語言擴充套件函式。由於它不是標準c/c++語言函式,所以不能在所有的編譯器中使用。但是,大多數的編譯器(如windows上的)通常在
/
標頭檔案中包含這個函式。
//函式原型

char *itoa(int

value, char *str, int radix)

value 是被轉換的整數

str 轉換後儲存的字元陣列

radix 轉換進製數,可以是 2, 8, 10, 16 等等

#include

#include

#include

int main()

由上可知,itoa()可以實現10到2、8、16的轉換,8到2、10、16的轉換,16到2、8、10的轉換,唯獨沒有2進製到其他進製的轉換。

功能比較強大,但是——他是乙個非標準函式,在pat執行環境下進行測試,顯示編譯失敗,所以暫時不要考慮這個。

2.sprintf 函式

把格式化資料寫入某個字元緩衝區中,標頭檔案為///函式原型

int sprintf(char *buffer, const char *format, [argument]...)

buffer: char*型陣列,指向將要寫入的字串的緩衝區

format: 格式化字串

[argument]...: 可選引數,就是任何型別的資料

sprintf可完成8,10,16進製制間的互相轉換。

#include

#include

#include

int main()

另外需要注意的地方就是,sprintf()函式還有很方便的擷取功能,具體可以自行搜尋或者檢視並學習《演算法筆記》p53.

功能:適用於將乙個數a的2進製(包括可以限制輸出位數)、8進製、10進製、16進製制的資料格式儲存到乙個string型別變數str中。string型別在c++做題中用的還是很多,也很方便的,所以我認為還可以。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

stringstream ss;

int main()

這裡關鍵就是用到了標頭檔案:

#include 

#include

這些比較陌生的標頭檔案。

使用sstream中的stringstream,定義了ss,可以結合std域中的

std::hex(16進製制)、std::dec(10進製)、std::oct(8進製)、std::bitset

<?>(num)

——這裡?位置代表輸出格式資料為多少位,num為對應的要轉換為2進製的數。

以上搭配起來形成「流」時,就實現了將乙個數a的對應的常用的2進製、8進製、10進製、16進製制格式儲存到了string型別變數str中了。

這裡需要注意的一點就是,流變數stringstream ss 是一次性的,這一點很重要,不可以重複多次使用。

4.以上都是針對常見的2/8/10/16進製制的轉換,那麼針對任意進製之間的轉換呢?

我建議大家檢視《演算法筆記》進製轉換章節p93。

針對以上內容,我的總結就是對於做題當中的進製轉換部分:

1.如果是常規的2/8/10/16進製制的轉換,可以採用第3點中stringstream搭配std::hex等的流方法儲存到string型別變數中進行操作;

2.如果是題意已經表明了需要實現任意進製轉換功能的話,可以記下《演算法筆記》p93中的關於進製轉換的**。

以上均屬於個人建議,大家還可以直接採用總結中的第2種方法,進製轉換題一來,就把模板**貼上去,雖然麻煩點,但是通用;我推薦的總結中的第一種方法是針對我的程式設計習慣和對於string型別的使用上的喜愛得出的,希望大家可以根據實際情況自行決定。

針對UCWEB的一些開發

ucweb瀏覽器,支援viewstate,但裡面的內容不能太長,否則會報錯。imagebutton的話,提交同樣也對應不上它的onclick事件。並且似乎也不能確定是不是它觸發的提交15 08 protected void page load object sender,eventargs e el...

做題一些其他思路的紀錄

類似 最短需要幾步 考慮到圖,考慮到bfs,而且是從 目的地 開始的bfs。dfs也要想到,但那是我的通常的想法,所以這裡不強調了 回溯是萬能解法。其他方法不行 dp之類的 就可以考慮回溯 嘗試所有方法 了。雖然很可能超時 在判斷是否為偶數或者奇數的時候,不要使用 0x1這樣的寫法,好處很少 基本沒...

解BUG的一些心得

目前,軟體 一直是程式設計師的夢魘,但其實只要掌握一定的技巧和基本知識,是可以輕鬆解決掉這些bug的。1 程式跑一段時間以後會越跑越慢。2 程式無緣無故crash。3 程式記憶體越變越大,直至程式crash。4 程式跑著突然死掉了。一 定位執行緒。以上解決問題的關鍵是先定位到程式變慢的 對於第1 4...