请教一个例题·
一个函数strcmp,比较字符串。
int strcmp(char *s,char *t)
{
while(*s&&*t&&(1))
{
s++;
t++;
}
return (2);
}
如果s<t,返回负数;s>t,返回正数;s=t,返回0;
则该程序(1)、(2)处分别应填写为???
问题点数:50、回复次数:21Top
1 楼dragonzxh(河马MiaMia~柯奶奶和黑爷爷的儿子叫柯南...~)回复于 2006-03-14 11:03:27 得分 20
1:*s==*t
2:(*s==*t)?(0):((*s)?(1):(-1))Top
2 楼dragonzxh(河马MiaMia~柯奶奶和黑爷爷的儿子叫柯南...~)回复于 2006-03-14 11:10:49 得分 0
以上有问题....
未想到如何不增加临时变量计算s,t长度....Top
3 楼Owl_xiang(owl_mei)回复于 2006-03-14 11:18:55 得分 0
dengdai.........Top
4 楼dragonzxh(河马MiaMia~柯奶奶和黑爷爷的儿子叫柯南...~)回复于 2006-03-14 11:37:10 得分 0
如果s<t,返回负数;s>t,返回正数;s=t,返回0;
------------
这个条件是长度?
Top
5 楼Owl_xiang(owl_mei)回复于 2006-03-14 11:44:22 得分 0
是的。我做的题就这样说的。。。Top
6 楼ytfrdfiw()回复于 2006-03-14 11:45:32 得分 0
对,应用strlen先判断长度是否一致,否则没必要比了。其他如上很好了。Top
7 楼du51(郁郁思扬)回复于 2006-03-14 11:46:00 得分 20
1:*s==*t
2:*s-*t
Top
8 楼songsong33(天堂里的蚊子)回复于 2006-03-14 11:46:14 得分 0
1:*s==*t
2:(*s==*t)?(0):(*t-*s)
Top
9 楼dragonzxh(河马MiaMia~柯奶奶和黑爷爷的儿子叫柯南...~)回复于 2006-03-14 11:53:01 得分 0
*s-*t仅仅是比较不同时候的那一个字符....不是长度Top
10 楼du51(郁郁思扬)回复于 2006-03-14 11:55:41 得分 0
如果s<t,返回负数;s>t,返回正数;s=t,返回0
我做的题就这样说的。。。
应该就是*s-*t了.和长度没什么关系.Top
11 楼dragonzxh(河马MiaMia~柯奶奶和黑爷爷的儿子叫柯南...~)回复于 2006-03-14 11:56:16 得分 0
如果s<t,返回负数;s>t,返回正数;s=t,返回0;
------------
这个条件是长度?
是的。我做的题就这样说的。。。
......
Top
12 楼du51(郁郁思扬)回复于 2006-03-14 12:02:19 得分 0
如果我说的不错.楼主对这个函数的意思还不是很理解.
要是理解也不会拿来这里问了.
string compare
比的就是字符串大小,说白了,第一个不同字符之间的差值.
如果s<t,返回负数;s>t,返回正数;s=t,返回0;
从这一句就应该知道是比较字符串的,而不是长度.
至于楼主的回答.有点自相矛盾.
呵呵..也可能我理解的不大对吧.Top
13 楼Owl_xiang(owl_mei)回复于 2006-03-14 12:17:50 得分 0
我还真的不是很理解 再想想。。。Top
14 楼mp6()回复于 2006-03-14 12:39:45 得分 0
同意du51(郁郁思扬),其实基本上就是一个字符串比较的实现。Top
15 楼mp6()回复于 2006-03-14 12:40:46 得分 5
TC库函数里面的strcmp就是这样返回的Top
16 楼Owl_xiang(owl_mei)回复于 2006-03-14 14:55:54 得分 0
du51(郁郁思扬):
照你的意思。我试了一下!
如下:
char *a="hellaaabbbccczzz";
char *b="hello";
*a、*b中,只要对应的第五个字符a<o,
则不管*a中第五个以后是什么字符,都要返回负数。
这样就算a<b了吗?Top
17 楼duduhaha(三人行必有我师)回复于 2006-03-14 15:02:23 得分 5
照你的意思。我试了一下!
如下:
char *a="hellaaabbbccczzz";
char *b="hello";
*a、*b中,只要对应的第五个字符a<o,
则不管*a中第五个以后是什么字符,都要返回负数。
这样就算a<b了吗?
就是这个意思啊。
Top
18 楼Owl_xiang(owl_mei)回复于 2006-03-14 15:02:51 得分 0
比的就是字符串大小,说白了,第一个不同字符之间的差值.
------------------
是这样的吗?
如果是这样的话,“du51(郁郁思扬)”的答案就应该是正确的!
初学,还忘大家多执教!见笑了!!!
Top
19 楼Owl_xiang(owl_mei)回复于 2006-03-14 15:07:01 得分 0
找了下资料。确实是这样的!
谢谢大家了Top
20 楼ncsy1983(游客)回复于 2006-03-14 16:26:26 得分 0
int strcmp2(char *p1,char *p2)
{
while(*p1 && *p2 && *p1==*p2 )
{
p1++;
p2++;
}
return *p1>=*p2?*p1:-1;
}
调试没问题..Top
21 楼tomy031(唐泊虎)回复于 2006-03-15 15:43:21 得分 0
string compare
比的就是字符串大小,说白了,第一个不同字符之间的差值.Top




