y**********0 发帖数: 425 | 1 编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的
位置,
如果在s中没有与t匹配的子串,就返回-1。
#include
#include
int index(char *s,char *t)
{
int i,j,k;
for(i=0;s[i]!='\0';i++)
for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++);
if(t[k]=='\0')
return i;
return -1;
}
void main()
{
int n;
char str1[20],str2[20];
gets(str1);
gets(str2);
n=index(str1,str2);
cout<
}
始终得不到正确答案,是Index的问题。
答案的Index程序是这样的:得到了正确的答案。不知道为什么?
int index( char *s, char *t)
{
int i,j,k;
for(i = 0; s[i] != '\0'; i++)
{
for(j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++, k++)
;
if (t[k] =='\0')
return i;
}
return -1;
} | r*******m 发帖数: 109 | 2 you need those brackets, its not Python.
【在 y**********0 的大作中提到】 : 编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的 : 位置, : 如果在s中没有与t匹配的子串,就返回-1。 : #include : #include : int index(char *s,char *t) : { : int i,j,k; : for(i=0;s[i]!='\0';i++) : for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++);
| X****r 发帖数: 3557 | 3 You 'if' is not inside the outer 'for' as you think.
Use {} for the 'for'. Indentions are just for visual, compiler ignores them.
【在 y**********0 的大作中提到】 : 编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的 : 位置, : 如果在s中没有与t匹配的子串,就返回-1。 : #include : #include : int index(char *s,char *t) : { : int i,j,k; : for(i=0;s[i]!='\0';i++) : for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++);
| y**********0 发帖数: 425 | 4
them.
答案和我的区别是:
答案中的第二个for 后面有个分号;
而且第一个for 后面要把下面的for if return夸起来,这样才能得到正确的答案,
我把第二个for后面的分号去掉后就不能得到正确答案,bracket去掉也不行。c/c++中
从来没有遇到
要在for后面加分号的。
【在 X****r 的大作中提到】 : You 'if' is not inside the outer 'for' as you think. : Use {} for the 'for'. Indentions are just for visual, compiler ignores them.
| z****e 发帖数: 2024 | 5 那今天就遇到一次吧。
【在 y**********0 的大作中提到】 : : them. : 答案和我的区别是: : 答案中的第二个for 后面有个分号; : 而且第一个for 后面要把下面的for if return夸起来,这样才能得到正确的答案, : 我把第二个for后面的分号去掉后就不能得到正确答案,bracket去掉也不行。c/c++中 : 从来没有遇到 : 要在for后面加分号的。
| X****r 发帖数: 3557 | 6 Semicolon by itself is a statement. for(...); is the same as
for(...) {
}
It looks like you're attempting to copy someone else's
homework with minor modifications to make it look different
without understanding what it does at all.
【在 y**********0 的大作中提到】 : : them. : 答案和我的区别是: : 答案中的第二个for 后面有个分号; : 而且第一个for 后面要把下面的for if return夸起来,这样才能得到正确的答案, : 我把第二个for后面的分号去掉后就不能得到正确答案,bracket去掉也不行。c/c++中 : 从来没有遇到 : 要在for后面加分号的。
| p***o 发帖数: 1252 | 7 Could be a solution found online
It's unlikely someone learning C/C++ intentionally writes code like for (...
);
【在 X****r 的大作中提到】 : Semicolon by itself is a statement. for(...); is the same as : for(...) { : } : It looks like you're attempting to copy someone else's : homework with minor modifications to make it look different : without understanding what it does at all.
| t****t 发帖数: 6806 | 8 火眼金睛啊...不过这么改还是一看就是抄的...
【在 X****r 的大作中提到】 : Semicolon by itself is a statement. for(...); is the same as : for(...) { : } : It looks like you're attempting to copy someone else's : homework with minor modifications to make it look different : without understanding what it does at all.
| y**********0 发帖数: 425 | | a****l 发帖数: 8211 | 10 LOL. What a Python-C.
【在 y**********0 的大作中提到】 : 编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的 : 位置, : 如果在s中没有与t匹配的子串,就返回-1。 : #include : #include : int index(char *s,char *t) : { : int i,j,k; : for(i=0;s[i]!='\0';i++) : for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++);
| c**b 发帖数: 2999 | 11 都用到c++了,怎么还用一些c的东西? 比如那个index()2个参数,直接用array不就行了,
为什么要用指针呢.尽管这样也对,但是太复杂.简单点,干脆用pass by reference,连指针也不用了.答案确实是对的而且构思很简单.我能想到的算法比答案差点,但是逻辑更清晰些:
int index(char s[],char t[])
{
int i,j,k,foundIt=-1;
for(i=0;s[i] != '\0';i++)
for (j=i,k=0;t[k] != '\0';j++,k++)
if (s[j] != t[k])
foundIt = -1;
else foundIt = i;
return foundIt;
}
编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的
位置,
如果在s中没有与t匹配的子串,就返回-1。
#include
#include
int index(char *s,char *t)
{
int i,j,k;
for(i=0;s[i]!='\0';i++)
for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++);
if(t[k]=='\0')
return i;
return -1;
}
void main()
{
int n;
char str1[20],str2[20];
gets(str1);
gets(str2);
n=index(str1,str2);
cout<
}
始终得不到正确答案,是Index的问题。
答案的Index程序是这样的:得到了正确的答案。不知道为什么?
int index( char *s, char *t)
{
int i,j,k;
for(i = 0; s[i] != '\0'; i++)
{
for(j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++, k++)
;
if (t[k] =='\0')
return i;
}
return -1;
}
【在 y**********0 的大作中提到】 : 编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的 : 位置, : 如果在s中没有与t匹配的子串,就返回-1。 : #include : #include : int index(char *s,char *t) : { : int i,j,k; : for(i=0;s[i]!='\0';i++) : for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++);
|
|