练习4-1 编写函数strindex(s,t),他返回字符串t在s中最右边出现的位置
1
#include
<
iostream
>
2 #include < cstring >
3
4 using namespace std;
5
6
7 // 这个是书上的代码
8 // 返回字符串t在s中第一次出现的位置
9 int StrIndex( char s[], char t[])
10 {
11 for ( int n = 0 ; s[n] != ' \0 ' ; n ++ )
12 {
13 int i,j;
14 for (i = n, j = 0 ; s[i] == t[j] && t[j] != ' \0 ' ; ++ i, ++ j)
15 ;
16 if (t[j] == ' \0 ' && j > 0 ) // j>0是考虑t是空串
17 return n;
18 }
19 return - 1 ;
20 }
21
22
23 // 返回字符串t在s中最右边出现的位置
24 int StrIndex2( char s[], char t[])
25 {
26 for ( int n = strlen(s) - 1 ; n >= 0 ; n -- )
27 {
28 int i, j;
29 for (i = n, j = strlen(t) - 1 ; j > 0 && s[i] == t[j] ; -- i, -- j)
30 ;
31 if (j == 0 )
32 return i;
33 }
34 return - 1 ;
35 }
36 int main()
37 {
38 char s[ 100 ] = { " abcdefg " };
39 char t[ 10 ] = { "" };
40 cout << StrIndex2(s, t) << endl;
41 return 0 ;
42 }
43
2 #include < cstring >
3
4 using namespace std;
5
6
7 // 这个是书上的代码
8 // 返回字符串t在s中第一次出现的位置
9 int StrIndex( char s[], char t[])
10 {
11 for ( int n = 0 ; s[n] != ' \0 ' ; n ++ )
12 {
13 int i,j;
14 for (i = n, j = 0 ; s[i] == t[j] && t[j] != ' \0 ' ; ++ i, ++ j)
15 ;
16 if (t[j] == ' \0 ' && j > 0 ) // j>0是考虑t是空串
17 return n;
18 }
19 return - 1 ;
20 }
21
22
23 // 返回字符串t在s中最右边出现的位置
24 int StrIndex2( char s[], char t[])
25 {
26 for ( int n = strlen(s) - 1 ; n >= 0 ; n -- )
27 {
28 int i, j;
29 for (i = n, j = strlen(t) - 1 ; j > 0 && s[i] == t[j] ; -- i, -- j)
30 ;
31 if (j == 0 )
32 return i;
33 }
34 return - 1 ;
35 }
36 int main()
37 {
38 char s[ 100 ] = { " abcdefg " };
39 char t[ 10 ] = { "" };
40 cout << StrIndex2(s, t) << endl;
41 return 0 ;
42 }
43