《C程序设计语言》练习4-1
编写函数strrindex(s,t),它返回字符串t在s中最右边出现的位置。如果s中不包含t,则返回-1。
代码:
123456789101112131415161718192021222324252627282930313233343536373839404142 | int strrindex(char s[],char t[]);int main(){ char s[] = "abqqqcdqqefqgqhijkqqqqlmnopqqqqrsqqqqtqrqrqrscsdaadzcqraaaaqqqqqr"; char t[] = "qr"; int Locate = strrindex(s,t); return 0;}int strrindex(char s[],char t[]){ int i = 0; int ret = -1; int tLenth = strlen(t);//字符串t的长度 for (i = 0; s[i] != '\0'; i++) { if (s[i] == t[0])//s[i]和字符串t的首元素相等了 { int j = 0; for (j = 0; j < tLenth; j++) { static int Count = 0;//记录元素相等的个数,和t的长度相等时,代表找到了 if (s[i+j] == t[j])//其他元素也相等 { Count++; if (Count == tLenth)//记录的相等个数和t的长度相等 { ret = i; Count = 0;//记录清零,为了后面查找准备 } } else//出现了不相等的元素 { Count = 0;//记录清零 break; } } } } return ret;} |
代码:
12345678910111213141516171819202122232425262728293031 | int strrindex(char s[], char t[]);int main() { char s[] = "abqqqcdqqefqgqhijkqqqqlmnopqqqqrsqqqqtqrqrqrscsdaadzcqraaaaqqqqqr"; char t[] = "qraaa"; int Locate = strrindex(s, t); return 0;}int strrindex(char s[], char t[]) { int sLength = strlen(s); int tLength = strlen(t); int i, j for (i = sLength - tLength; i >= 0; i--) //从后往前找 { for (j = 0; j < tLength; j++) { if (s[i + j] != t[j]) //不匹配的时候 { break; } } if (j == tLength) //找到了 { return i; // 找到最后一次出现的位置 } } return -1; // 如果未找到} |