編寫函數StrCompare(S,T)實現兩個串的比較


出處:數據結構的作業題目。

設串采用定長的順序存儲結構,編寫函數StrCompare(S,T)實現兩個串的比較。要求比較結果有大於、等於和小於三種情況。

以自定義函數形式寫出,直接上代碼吧

int StrCompare(String *S, String *T) {
    int i=1;
    if(S->ch[0]==T->ch[0]) {
        while(i<=S->len) {
            if(S->ch[i]!=T->ch[i])
                return S->ch[i]-T->ch[i];
            i++;
        }
        if(i>S->len)
            return 0;
    }
    return S->ch[0]-T->ch[0];
}

既然能po在學習日記上肯定是有意義的。因為此前我雖然用過這個函數(只有在考試或者寫作業的時候),但是總是沒搞清楚compare的意思。

我以為是整個串的ASCii碼數值加起來去compare大小,我錯了。

字符串比較的規則是:從兩個字符串的首字符開始,一次比較相對應的字符(比較字符的ASCII碼),知道出現不同的字符或遇‘\0’為止。如果所有的字符都相同,返回0;否則,以第一個不相同字符的比較結果為准,返回這兩個字符的差,即第一個字符串中的字符減去第二個字符串中的字符得到的差。

可能這是很多人不以為意的一個point,我一開始也這么覺得,其實人人都是這樣的啦,反正我以后不會再在這里倒下了。

學習就是一個掃雷的過程,我相信如果不去處理它我以后可能就會為這個小細節付出代價,加油吧  :)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 LeetCode 第 242 題:給定兩個字符串 s 和 t,編寫一個函數來判斷 t 是否是 s 的字母異位詞 編寫一個程序,將兩個字符串s1和s2比較,如果s1 > s2,輸出一個整數;若s1 = s2,輸出0;若s1 < s2,輸出一個負數。不要用strcpy函數。兩個字符串用gets函數讀入。輸出的正數或負數的絕對值應是相比較的兩個字符串相對應字符的ASCII碼的差值。 編寫一個程序,將連個字符串s1和s2比較,如果s1 > s2,輸出一個整數;若s1 = s2,輸出0;若s1 < s2,輸出一個負數。不要用strcpy函數。兩個字符串用gets函數讀入。輸出的正數或負數的絕對值應是相比較的兩個字符串相對應字符的ASCII碼的差值。例如,"A"和“C”相比,由於"A" < "C",應輸出負數,同時由於‘A’與‘C’的ASCII碼差值為2,因此應輸出"-2" 寫一個函數,實現兩個字符串的比較。即實現strcmp函數,s1=s2時返回0,s1!=s2時返回二者第一個不同字符的ASCII值。 編寫一個函數,實現兩個字符串的連接功能 C++實現strcmp函數,兩個字符串比較 Problem A: 自定義函數strcomp(),實現兩個字符串的比較 寫一函數,實現兩個字符串的比較。即自己寫一個strcmp函數,函數原型為int strcmp(char * p1 ,char * p2); 設p1指向字符串s1, p2指向字符串s2。要求當s1=s2時,返回值為0;若s1≠s2,返回它們二者第1個不同字符的ASCII碼差值(如"BOY"與"BAD" 8、將兩個字符串s1,s2進行比較,如果s1>s2,則輸出一個正數。如果s1 = s2,輸出零。如果s1 < s2, 輸出一個負數,不用strcmp函數,輸出的正數或者負數的絕對值應該是比較兩字符串相應字符的ascii碼的差值。 寫一函數,實現兩個字符串的比較。即自己寫一個strcmp函數,函數原型為int strcmp(char * p1 ,char * p2); 設p1指向字符串s1, p2指向字符串s2
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM