| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2510 人关注过本帖
标题:不用变量实现strlen功能
只看楼主 加入收藏
zgx_921
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-9-4
收藏
得分:0 
酒肉弥勒佛你这都能想到,崇拜!

2007-09-06 10:01
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
收藏
得分:0 
回复:(yuki)楼上使用递归好方法,不知不觉想到一个...
你的图片也太狠了吧

jorden008@
2007-09-06 10:17
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用boot2046在2007-9-6 9:05:52的发言:
恩,用递归也是一个好方法

来一个不用递归的吧

#include <stdio.h>
int my_strlen(char *s)
{
return (char *)strchr(s, '\0') - s;
}


int main()
{
char *s = "1234567";

printf("%d\n",my_strlen(s));
}

这个应该不算吧?你strchr函数用了变量吧?


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-06 12:21
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
这是库函数哦,没说没让用库函数啊

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-09-06 13:35
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
恩,是没说
不过,这种题,不让用变量,要自己写函数功能,十有八九是不让用库函数的,靠的就是纯算法和设计的问题,库函数有取巧之嫌

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-09-06 13:47
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
当然,如果连库函数都不用的话,那就自己实现一个strchr



#include <stdio.h>

char *my_strchr(char *s, char c)
{
while(*s++ != c);

return --s;
}
int my_strlen(char *s)
{
return (char *)my_strchr(s, '\0') - s;
}


int main()
{
char *s = "123456789";

printf("%d\n",my_strlen(s));


}



Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-09-06 13:48
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
你的方法和我的一样,都是用尾地址减首地址,不过你的代码编译过了吗,应该有问题:
int my_strlen(char *s)
{
return (char *)my_strchr(s, '\0') - s;
}

结果好像也差一吧

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-09-06 14:02
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
除以上这些方法外,还有没有其它方法?
大同小异的就算了.比把while改for的,性质是一样.

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-06 14:02
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
没验证过的代码就不放上来了

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-09-06 14:06
aoaoaoao
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-5-14
收藏
得分:0 
形参是变量么?
2007-09-06 20:26
快速回复:不用变量实现strlen功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022622 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved