编写函数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