怎么比较两个字母数组中字符是否相等 (科大讯飞笔试)

zzudhj 2011-09-30 12:04:24
我做的是一道题目是: 输入两个串,判断一个串是否为另一穿的子串。用标准C这个是讯飞的笔试题目,不用stl,也不用msdn;

#include<stdio.h>
#include<stdlib.h>
#define MAX 20




int test()
{
if('a'=='a')
return 10;
else
return 0;
}
int main()
{
// int te;
//te=test();
//printf("%d",te);


char ch;
char ch1[MAX];
char ch2[MAX];
int lengthCh1=0;
int lengthCh2=0;
bool flag=false;
bool flag1=false;

scanf("%c",&ch);
while(ch!='$')
{
ch1[lengthCh1++]=ch;
scanf("%c",&ch);
}
ch1[lengthCh1++]='\0';

scanf("%c",&ch);
while(ch!='$')
{
ch1[lengthCh2++]=ch;
scanf("%c",&ch);
}
ch1[lengthCh2]='\0';

printf("%d\n",lengthCh2-1);
printf("%d\n",lengthCh1-1);
int posCh2=0;
int k;

for(int posCh1=0; posCh1<lengthCh1-1 ; posCh1++)
{
k= posCh1;
printf("dgj\n" );
while(ch2[posCh2]==ch1[k])
{

k++;
posCh2++;
flag1=true;
printf("%d\n",posCh2);
if( posCh2>=lengthCh2-1)
{
//flag=true;

printf("success\n");
exit(0);
}
}//while
if(flag1)
{
posCh1=k-1;
flag1=false;
}


else posCh1=k;

posCh2=0;

}//for

if(!flag) printf("fail\n");
// else printf("success\n");

return 0;
}

...全文
652 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
七擒关羽 2011-09-30
  • 打赏
  • 举报
回复
LZ还是很依赖main函数,还有很长的路要走
AnYidan 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mymgrub 的回复:]
C/C++ code

char * __cdecl strstr (
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;

if ( !*str2 )
……
[/Quote]

c 标准库中的函数几乎都没有输入条件 failure 的判断,面试时注意
morebread 2011-09-30
  • 打赏
  • 举报
回复
对啊,用strstr就可以了……
yuqangy 2011-09-30
  • 打赏
  • 举报
回复
有告诉? 用VC2008怎么跟不进去
yuqangy 2011-09-30
  • 打赏
  • 举报
回复
else posCh1=k; 这句话只要while循环了就永远不会执行吧,不执行循环的话,这句话也没必要存在呀
MYMGrub 2011-09-30
  • 打赏
  • 举报
回复

char * __cdecl strstr (
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;

if ( !*str2 )
return((char *)str1);

while (*cp)
{
s1 = cp;
s2 = (char *) str2;

while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;

if (!*s2)
return(cp);

cp++;
}

return(NULL);

}

微软好像告诉我们这是个系统函数...
yuqangy 2011-09-30
  • 打赏
  • 举报
回复
else posCh1=k; 这句话只要while循环了就永远不会执行吧,不执行循环的话,这句话也没必要存在呀
MYMGrub 2011-09-30
  • 打赏
  • 举报
回复

char * __cdecl strstr (
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;

if ( !*str2 )
return((char *)str1);

while (*cp)
{
s1 = cp;
s2 = (char *) str2;

while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;

if (!*s2)
return(cp);

cp++;
}

return(NULL);

}

微软告诉我这好像是个系统函数...
xia_wj 2011-09-30
  • 打赏
  • 举报
回复
KMP
W170532934 2011-09-30
  • 打赏
  • 举报
回复
mark
A13433758072 2011-09-30
  • 打赏
  • 举报
回复
需要这么啰嗦吗?
A13433758072 2011-09-30
  • 打赏
  • 举报
回复
需要这么啰嗦吗?
A13433758072 2011-09-30
  • 打赏
  • 举报
回复
需要这么啰嗦吗?
cocoabird 2011-09-30
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110928/21/f4223808-d32b-4900-b2a4-3ecfc1b70719.html?17635
rxngzq 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 keiy 的回复:]
这个是C++ builder6的源码,我稍改一下,供参考

C/C++ code


char * strstr(const char *str1, const char *str2)
{
char *c1, *c2, *s = (char *)str1;

if (!*str2)
return (char *)str1; /* retur……
[/Quote]
努力
liuyufeng1 2011-09-30
  • 打赏
  • 举报
回复
指针指住一个地儿,然后strcmp
柯本 2011-09-30
  • 打赏
  • 举报
回复
这个是C++ builder6的源码,我稍改一下,供参考

char * strstr(const char *str1, const char *str2)
{
char *c1, *c2, *s = (char *)str1;

if (!*str2)
return (char *)str1; /* return str1 if str2 is empty */

if (!*str1)
return NULL; /* return NULL if str1 is empty */

while(*s)
{
if (*s == *str2) /* wait for the first matching char */
{
c1 = s;
c2 =(char *) str2;
/* continue matching chars in the sub-str */
while (*c1 && *c2 && (!(*c2 - *c1)))
{
c2++;
c1++;
}
if (!*c2) /* if we've run off the end of str2 */
return s; /* then we've found the first substr match */
}
s++; /* otherwise try the next char */
}

return NULL; /* didn't find anything */
}
柯本 2011-09-30
  • 打赏
  • 举报
回复
以下代码是一个编译器中的源码,供参考


char *strstr( const char *s1, const char *s2)
{
size_t len2;
if ( !(len2 = strlen(s2)) ) return (char *)s1;
for ( ; *s1; ++s1 ) {
if ( *s1 == *s2 && strncmp( s1, s2, len2 )==0 ) return (char *)s1; }
return 0;
}
十八道胡同 2011-09-30
  • 打赏
  • 举报
回复
KMP就可以
Lisperlikai 2011-09-30
  • 打赏
  • 举报
回复
编写程序寻求最佳算法,省事省力省空间,效率第一,ok??

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧