日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言字符串文库总结,C语言字符串.ppt

發(fā)布時間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言字符串文库总结,C语言字符串.ppt 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言字符串.ppt

ACM程序設(shè)計,福州大學(xué)至誠學(xué)院 馮新,第四講,字符串處理,常用函數(shù)介紹,復(fù)制,char* strcpy char *s1, const char *s2; 將字符串s2復(fù)制到s1指定的地址 char* strncpy char *s1, const char *s2, size_t len; 將s2的前l(fā)en個字符字節(jié)復(fù)制到s1中指定的地址, 不加0,連接,char* strcat char *s1, const char *s2; 將字符串s2連接到s1尾部 char* strncat char *s1, const char *s2, size_t len; 將字符串s2的前l(fā)en個字符連接到s1尾部, 不加0,比較,int strcmp const char *s1, const char *s2; 比較字符串s1和s2 int strncmp const char *s1, const char *s2, size_t len; 對s1和s2的前l(fā)en個字符字節(jié)作比較,查找,char* strchr const char *s, int ch; 在s中查找給定字符字節(jié)值ch第一次出現(xiàn)的位置 char* strrchr const char *s, int ch; 在串s中查找給定字符ch最后一次出現(xiàn)的位置, r表示從串尾開始 char* strstr const char *s1, const char *s2; 在串s1中查找指定字符串s2第一次出現(xiàn)的位置,其他,size_t strlen const char *s; 求字符串s的長度,字符轉(zhuǎn)換,所謂字符轉(zhuǎn)換就是將字符按照某種規(guī)律轉(zhuǎn)換成對應(yīng)的字符,曾經(jīng)最難的問題(HDU 1048),題目描述 愷撒大帝生活在充滿危險和陰謀的時代。愷撤大帝面臨最嚴(yán)峻的形勢就是如何生存下去,為了生存,他決定設(shè)計一種密碼。這種密碼設(shè)計得是如此難以置信的合理,以至于不知道它的原理就無法破譯。 你是愷撒軍隊的一個小隊長。你的工作就是對愷撒發(fā)布的密文進(jìn)行解碼,然后告訴軍頭的司令官。加密的規(guī)則其實很簡單對原文中的每個字母,轉(zhuǎn)換成字母表后面第5個字母,如原文中的字符為字母A,則密文中對應(yīng)的字符為F。因為你的工作是解碼,所以要將密文文翻譯成原文。 ciphertext密文ABCDEFGHIJKLMNOPQRSTUVWXYZ plaintext 原文VWXYZABCDEFGHIJKLMNOPQRSTU 加密時,只有字母字符才按照上述規(guī)則進(jìn)行加密。任何非字母字符保持不變,而且所有享母字符均為大寫字母。輸入數(shù)據(jù) 輸入文件(非空)最多包含100組數(shù)據(jù)。每組數(shù)據(jù)為下面的格式,每組數(shù)據(jù)之間沒有空行,所有的字符為大寫。 每組數(shù)據(jù)由3行組成 1首行為字符串START; 2第2行為密文,包含的字符個數(shù)大于等于1,小于等于200,表示愷撒發(fā)布的密文; 3第3行為字符串END。 最后一組數(shù)據(jù)后有ENDOF,表示輸入結(jié)束。 輸出描述 對每組數(shù)據(jù),輸出一行,為你解密出來的原文。,輸入數(shù)據(jù) 輸入文件(非空)最多包含100組數(shù)據(jù)。每組數(shù)據(jù)為下面的格式,每組數(shù)據(jù)之間沒有空行,所有的字符為大寫。 每組數(shù)據(jù)由3行組成 1首行為字符串START; 2第2行為密文,包含的字符個數(shù)大于等于1,小于等于200,表示愷撒發(fā)布的密文; 3第3行為字符串END。 最后一組數(shù)據(jù)后有ENDOF,表示輸入結(jié)束。 輸出描述 對每組數(shù)據(jù),輸出一行,為你解密出來的原文。 Sample START NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX END START IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END ENDOF Sample Output IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE題目分析,分析本題針對的大寫字母,把每個字母轉(zhuǎn)換成字母表前5個字母,形成環(huán)狀序列。F轉(zhuǎn)換成AG轉(zhuǎn)換成BZ轉(zhuǎn)換成U,A、B、C、D、E分別轉(zhuǎn)換成V、W、X、Y、Z。 轉(zhuǎn)換公式 ai ai-5-652665; 或者 ai ai21-652665;溫馨提示 A在ASCII碼中是65本題還要特別注意輸入數(shù)據(jù)的格式,每組數(shù)據(jù)占3行,但只有中間一行是需要處理的,在讀人數(shù)據(jù)時要跳過第1行和第3行。另外,輸入數(shù)據(jù)結(jié)束“ENDOF”為標(biāo)志的。,whilegetsa ifstrcmpa, “ENDOF“ 0 break; getsa; int i 0; whileai 0 ifai A ,include include int main char a210; whilegetsa ifstrcmpa, “ENDOF“ 0 break; getsa; int i 0; whileai 0 ifai A ,字符編碼,所謂字符編碼就是將字符串中的每個字符按照編碼規(guī)則轉(zhuǎn)換成一個數(shù)字或一串?dāng)?shù)字或者將字符串中具有某種規(guī)律的子串轉(zhuǎn)換成一串?dāng)?shù)字或其他字符等。,Soundex(ZJU 1858),Soundex編碼方法根據(jù)單詞的拼寫將單詞進(jìn)行分組,使得同一組的單詞發(fā)音很接近。例如,“can”與“khawn”,“con”與“gone”在Soundex編碼下是相同的。 Soundex編碼方法將每個單詞轉(zhuǎn)換成一串?dāng)?shù)字,每個數(shù)字代表一個字母。規(guī)則如下 1代表B,F,P或V; 2代表C,G,J,K,Q,S,X或Z; 3代表D或T; 4代表L; 5代表M或N; 6代表R。 而字母A,E,I,O,U,H,W和Y不用任何數(shù)字編碼,并且相鄰的、具有相同編碼值的字母只用一個對應(yīng)的數(shù)字代表。具有相同Soundex編碼值的單詞被認(rèn)為是相同的單詞。輸入描述 輸入文件中的每行為一個單詞,單詞中的字母都是大寫,每個單詞長度不超過20個字母。 輸出描述 對輸入文件中的每個單詞,輸出一行,為該單詞的Soundex編碼。 樣例輸入 樣例輸出 KHAWN 25 PFISTER 1236 BOBBY 11,題目分析,比如樣例輸入中的第一個單詞”KHAWN”,它的Soundex編碼值之所以是“25”,是因為第一個字母“K”的編碼值為“2”,而接下來的三個字母“H”、“A”和“W”都沒有編碼值,最后一個字母“N”的編碼值為“5”。樣例輸入中的最后一個單詞“BOBBY”,它的Soundex編碼值之所以是“11”,是因為第一個字母。“B”的編碼值為“1”,第2個字母“O”沒有編碼值,之后兩個字母“B”相鄰,只編碼成一個“1”,最后一個字母“Y”沒有編碼值。 從上面的分析可以看出,題目中提到的“相鄰的、具有相同編碼值的字母只用一個對應(yīng)的數(shù)字代表”,如果具有相同編碼值的字母之間間隔了若干個沒有編碼值的字母,則要單獨編碼。例如BB編碼成“l(fā)”,“BV”也編碼成“1”,而“BOB”編碼成“11”。本題在處理時可以把26個字符的編碼值(數(shù)字字符)按順序存放到一個字符數(shù)組中,對沒有編碼值的字符,用“*”號表示。然后對字符串中的每個字符,輸出其對應(yīng)的數(shù)字;如果后一個字母的編碼值跟前一個字母的編碼值一樣,則后一個字母的編碼值不輸出。,include include int main char change27 “*123*1222455*12623*1*2*2“; char 21; int i; whilescanf“s“, EOF int len; char temp; char prev 0; len strlen; fori 0; i len; i temp changei-A; iftemp * prev 0; continue; if temp prev continue; printf“c“, temp; prev temp; printf“n“; return 0; ,回文的判斷與處理,所謂回文palindrome字符串,就是從左向右讀和從右向左讀結(jié)果相同的字符串。回文的判斷與處理經(jīng)常出現(xiàn)在ACM/ICPC題目中。判斷回文的方法很簡單,假設(shè)字符串長度為n,只需依次判斷字符串中第i個字符與第n-l-i個字符是否相等即可,i0,1,2,3n/2。,int huiwenchar *s char *p1, *p2; int i, t 1; p1 s; p2 sstrlens-1; fori 0; i strlens/2; i if*p1 *p2 t 0; break; p1; p2; return t; ,子串處理,字符串中任意一個連續(xù)的字符組成的字符序列被稱為該字符串的子串。有時,從字符串中抽取不連續(xù)的字符所組成的字符序列,也可以看成是字符串的子串。 需要說明的是,子串處理中的問題大多都屬于子串匹配的問題,其中涉及的算法(如KMP算法)比較復(fù)雜,我們不在這里進(jìn)行討論。,字符串的包含問題(ZJU 1970),題目描述 給定兩個字符串s和t,判斷s是否是t的子串,也就是說,是否能通過從t中去掉一些字符,使得剩余的字符構(gòu)成的字符串為s。 輸入描述 輸入文件包含多個測試數(shù)據(jù),每個測試數(shù)據(jù)占一行,為兩個字符串s和t,這兩個字符串是由大小寫字母字符構(gòu)成的,兩個字符串之間用空格隔開。輸人數(shù)據(jù)一直到文件尾。 輸出描述 對輸入文件中的每個測試數(shù)據(jù),判斷s是否為t的子串。 樣例輸入 樣例輸出 person compression No VERDI vivaVittorioEmanueleReDiltalia Yes,題目分析,對字符串s的第0個字符s0,在字符串t中進(jìn)行查找,假設(shè)查找到,其第一次出現(xiàn)的位置為t0;在字符串t的t0下一個位置繼續(xù)查找s1,假設(shè)查找到,其(第一次出現(xiàn)的)位置為t1l;在字符串t的t1下一個位置繼續(xù)查找s2。如果都能查找到s中的每個字符,則s是t的“子串”;否則如果s中后面某些字符在t中沒有找到對應(yīng)的字符,則s不是t的“子串”。 例如,對樣例輸入中的第1個測試數(shù)據(jù),按照上述方式在字符串t中查找到字符串s中的前兩個字符s0和s1后,后面的4個字符沒能在t中查找到,所以s不是t的“子串”。相反,在第2個測試數(shù)據(jù)中,在t中都能查找到s中的每個字符,所以s是t的“子串”。,char s1000000; char t1000000; int main long ls, lt; long ps, pt; whilescanf“s s“, s, t EOF ls strlens; lt strlent; forps pt 0; ps ls ,Thank You ,

總結(jié)

以上是生活随笔為你收集整理的c语言字符串文库总结,C语言字符串.ppt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。