題目:輸入乙個字串,判斷它是否為回文串以及映象串。
樣例輸入:
notapalindromeisapalinilapasi
2a3meas
atoyota
樣例輸出:
notapalindrome -- is not a palindrome.isapalinilapasi -- is a regular palindrome.
2a3meas -- is a mirrored string.
atoyota -- is a mirrored palindrome.
程式設計如下:
#include #include #include const char* rev= "a 3 hil jm o 2tuvwxy51se z 8 ";
const char* msg = ;
char ismirrored(char ch)
return rev[ch - '0' + 25];
}int main()
if(ismirrored(s[i]) != s[len - 1 -i])
} printf("%s -- is %s.\n",s,msg[m*2+p]);
}return 0;
}
1、這個**第乙個我遇到的問題是,判斷乙個字串的一半,經過測試,應該是
i < (len + 1) /2
2、答案的輸出是用了乙個一維陣列msg,這樣簡化**很有意思,希望可以運用到以後編碼上。
3、這個**用到了ctype裡面的乙個函式,isalpha()來判斷是否是字元
,同樣的,還有isdigit,isprint。
如果乙個字元型變數ch-『a』,則返回的是它在字母表中的順序,a是0,以此類推。若ch是乙個數字,則ch-『0』返回的是其數字本身,如『5』-『0』=5.這種使**簡化的方法要學會。
查閱資料,cytype.h:
ctype.h的c標準庫的標頭檔案中提供的宣告幾個有用的函式測試和字元對映。
所有的功能都接受int作為引數,其值必須是eof或為unsigned char表示。
所有函式返回的引數c非零(true),如果滿足條件。否則返回0。
s.n.
函式及說明
1int isalnum(int c)
該函式檢查傳遞的字元是否是字母數字。
2int isalpha(int c)
該函式是否傳遞的字元是字母。
3int iscntrl(int c)
該函式是否傳遞的字元是控制字元。
4int isdigit(int c)
該函式是否傳遞的字元是十進位制數字。
5int isgraph(int c)
該函式是否傳遞的字元的圖形表示,使用的語言環境。
6int islower(int c)
該函式檢查傳遞的字元是否是小寫字母。
7int isprint(int c)
該函式檢查傳遞的字元是否是可列印的。
8int ispunct(int c)
該函式檢查傳遞的字元是否是標點符號。
9int isspace(int c)
該函式檢查傳遞的字元是否是空白。
10int isupper(int c)
該函式檢查傳遞的字元是否是大寫字母。
11int isxdigit(int c)
該函式檢查傳遞的字元是否是十六進製制數字。
該庫還包含兩個轉換函式,也接受並返回乙個「整數」
s.n.
函式及說明
1int tolower(int c)
這個函式轉換大寫字母為小寫。
2int toupper(int c)
這個函式小寫字母轉換為大寫。
回文詞,映象文的判斷
此題為紫書程式3 7回文詞 輸入乙個字串,判斷它是否為回文詞及映象串。輸入字串保證不含有數字字元0。每個字元的映象如下表 character reverseaa bcde 3fgh hiij lklj mmno opqr s2tt uuvv wwxx yyz5 112s 3e45 z678 89輸入...
回文詞 題解
題目描述 回文詞是一種對稱的字串 也就是說,乙個回文詞,從左到右讀和從右到左讀得到的結果是一樣的。任意給定乙個字串,通過插入若干字元,都可以變成乙個回文詞。你的任務是寫乙個程式,求出將給定字串變成回文詞所需插入的最少字元數。比如字串 ab3bd 在插入兩個字元後可以變成乙個回文詞 dab3bad 或...
模擬 回文詞
題目描述 回文詞是一種對稱的字串,也就是說 乙個回文詞,從左向右讀和從右向左讀的結果都是一樣的.任意給定乙個字串,通過插入若干個字元,都可以變成乙個回文詞.你的任務是寫乙個程式,求出給定字串變成回文詞所需插入的最小字元數.比如,字串 ab3db 在插入兩個字元後可以變成乙個回文詞 dab3bad a...