由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这个程序怎么解决
相关主题
reverse words, not the Microsoft one!!!c++ 得最基本问题
请教如何使用qsort() to sort string.A aimple C++ question
请教一个简单字符串程序 (转载)问一道C++面试题
问个缺少逗号的数组赋值问题C++ formatted output question
grep或egrep怎样输出匹配到的不连续的字符串?C++ Segment Fault
c/c++/java的对象/结构输入问个指针array 的简单问题
求改进小函数这个在c++ const不变,不能用相同地址的变量改,咋做的
indent C++ source code by VC++ 6.00问个字符串的基本问题
相关话题的讨论汇总
话题: char话题: index话题: int话题: str1话题: str2
进入Programming版参与讨论
1 (共1页)
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
9
啊,原来如此。多谢各位。
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++);

1 (共1页)
进入Programming版参与讨论
相关主题
问个字符串的基本问题grep或egrep怎样输出匹配到的不连续的字符串?
四道C++面试题c/c++/java的对象/结构输入
在c中如果一个function return 一个字符串求改进小函数
C 语言,2进制转16进制,输入问题indent C++ source code by VC++ 6.00
reverse words, not the Microsoft one!!!c++ 得最基本问题
请教如何使用qsort() to sort string.A aimple C++ question
请教一个简单字符串程序 (转载)问一道C++面试题
问个缺少逗号的数组赋值问题C++ formatted output question
相关话题的讨论汇总
话题: char话题: index话题: int话题: str1话题: str2