字母大小寫轉換

2021-06-16 18:22:01 字數 917 閱讀 2489

好久沒寫博了,準備繼續搞起。今天先寫個簡單的,字母的大小寫轉換。

問題1:給定乙個字串「asdfghj」,把它全部轉為大寫字母或者小寫字母。

這問題是不是太簡單了點,現有的各種函式庫裡面都有什麼strtoupper()、strtolower()之類的轉換函式。自己手寫乙個呢?

這讓我想起以前上機實驗寫c程式的時候做過這個題。好吧,先寫下當時我是怎麼做的:

void strtoupper( char *str,int len)   

}

}

看起來很簡單吧,就是首先計算一下大小寫字母之間的差距 'a'-'a',然後針對每個字母判斷是否是小寫字母,是的話就轉為大寫字母。strtolower也是一樣的道理。

問題2:在問題1加個條件,不得使用判斷語句,進行字母的大小寫轉換,這該怎麼做呢?

嗯,其實這是我在看彙編的時候看到的乙個解法,看下原書的截圖:

從圖中可以發現,其實大小寫字母的二進位制表示中,只有1個二進位制的差別,也就是第5個二進位制位不一樣(從0開始計數)。

這下就更簡單多了,小寫字母轉換為大寫字母,其實也就是把第5個二進位制位置為0即可,即:

小寫轉大寫: str & 11011111b  => str &0xdf

大寫轉小寫: str |   00100000b  => str | 0x20

這樣**就更加簡單高效了。

void strtoupper( char *str,int len){

int i;

for(i=0;i

不過,這個做法顯然要求str是由字母組成的,要是有其它字元,還是得用判斷。

字母大小寫轉換

這道題其實很簡單,有好幾種做法。我們都知道大寫字母a z的編碼是65 90,小寫字母的編碼a z是97 112。首先先看這張 由圖中的 可以觀察得出 很直觀可以看出,大寫字母和小寫字母的ascii碼值相差32 通過仔細觀察相應的二進位制,可以得出大寫字母和小寫字母二進位制的第5位 從右往左從0開始數...

js字母大小寫轉換

tolocaleuppercase 方法 返回乙個字串,其中所有的字母字元都被轉換為大寫,同時適應宿主環境的當前區域設定。stringvar.tolocaleuppercase 必選的 stringvar 引用是乙個 string 物件,值或文字。說明tolocaleuppercase 方法轉換字串...

c 字母大小寫轉換

今天突然有了點空閒時間,又剛好看到乙個需要轉換字母大小寫的問題,於是就來這裡聊一下 首先,我們要知道可行的轉換方法 一 ascall碼 使用ascall碼轉換的原理是乙個字母的大小寫ascall碼之差為32.因此大致思路為先判斷大小寫,再進行相應的 32 includeusing namespace...