2016-02-27 330 views
-4

以下代碼確保我們接受一個字符串,它只是通過將其轉換爲小寫字母來打印字符串中的大寫字母。代碼如何確保這一點?字符串可能如下。輸入字符串r可以任意這些:帶大寫字母和小寫字母的字符串轉換

Kira 
hates 
is 
he 
L 

for(size_t j = 0; j < r.size(); j++) 
    if(r[j] <= 'Z') 
     r[j] = (char) (r[j] + 'a' - 'A'); 
+0

該問題已被編輯,所以不要現在投票。而是回答。 –

+0

@PaulRooney是的代碼工作,但我對其工作的理解不是很好或清晰 –

+0

看看字符'a-z'和'A-Z'的acii代碼。如果你在windows上使用字符映射應用程序。對於哪些字符是'if(r [j] <='Z')'true?數字術語中「a」 - 「A」的價值是多少?對於任何匹配的小寫字母和大寫字母,它是相同的值嗎?例如''z' - 'Z''? –

回答

1

那麼首先if(r[j] <= 'Z')檢查如果字符值是十進制小於'z'或90。如果你看看ascii表,你會知道字母A到Z是十進制的65到90.所以它之間的任何值都是大寫字母。

因此,在Kira的示例中,它檢查K,其值爲75. if(75 <= 90)將評估爲true。

下一步是將字母改爲小寫。因此,ascii表中的小寫字母a和大寫字母A相距32,或者使用'a' - 'A',其值爲32.所以,由於大寫字母首先出現在表格上,您希望將32添加到大寫字母以獲取小寫字母。 所以小寫字母是從97到122.所以當K是75 + 32 = 107時,當你在acii表中看到它的十進制時,它的k

相關問題