鱼C论坛

 找回密码
 立即注册
查看: 2872|回复: 4

两个版本的函数any,哪一个比较好呢?

[复制链接]
发表于 2011-7-1 00:43:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yuprxk 于 2011-7-1 23:51 编辑

/*首先要说的是,这两个函数any,不管哪一个都有缺陷。我想问一下,哪一个较好呢?
*/
#include <stdio.h>

int any(char s[],const char d[],const int i)

{

int res;

int si ;

res = -1;

for( si = 0; s[si] != '\0' ; si++)

{

  if(s[si] == d[i])


   res = si;

}

return res;

}



int main()

{

int i;

char tests[] = "What I can see";

char testd[] = "tue";

i = any(tests,testd,0);

  

if(i == -1)

  printf("Not find\n");

else

  printf("Find\n");

return 0;

}

/*

*另一个版本的any,与上一个主要 的区别是return语句。

*/

#include <stdio.h>

int any(char s[],const char d[],const int i)

{

int si ;

for( si = 0; s[si] != '\0' ; si++)

{

  if(s[si] == d[i])//此处的d已经修改为d[i]
   return si;

}

return -1;

}



int main()

{

int i;

char tests[] = "What I can see";

char testd[] = "tue";

i = any(tests,testd,0);


if(i == -1)

printf("Not find\n");

else

printf("Find\n");

return 0;

}
[i]
我想请问一下,这两个版本的any哪一个较好 呢?
[/i]


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-1 01:07:47 | 显示全部楼层
本帖最后由 excessstone 于 2011-7-1 01:09 编辑

原則上講第二個好,因为提前结束遍历。
但是这两个程序能运行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-1 01:10:44 | 显示全部楼层
第二个有较多的分支,可能不易控制。
第一个有点小问题,我本来想返回第一次出现的位置,这倒好,返回的是最后一次出现的位置了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-1 01:30:31 | 显示全部楼层
我现在没有编译器,不过看起来似乎都不会有正确结果的样子。等我试试以后再说。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-1 03:24:05 | 显示全部楼层
if(s[si] == d) 这一行有错

        1        IntelliSense: operand types are incompatible ("char" and "const char *")        c:\users\windows\documents\visual studio 2010\projects\anyc\anyc\any.c        17        12        anyc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-7 20:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表