简单编程题,哪位高手帮我看看

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:18:33
小猪又有题不会了- -!!
大家帮忙想想。。

下面函数的功能是( )
sss(s,t)
char *s,*t;
{ while((*s)&&(*t)&&(*t++==*s++));
return(*s-*t);
}
A.求字符串的长度
B.比较2个字符串的大小
C.将字符串s复制到字符串t中
D.将字符串s接续到字符串t中

答案是C,但是我就是百思不得其解,知道的告诉下,最好有过程,小猪在这谢谢各位了
答案是B,不好意思打错了!!绝对是手误!那个while后面有个分号,也就是说条件成立后什么也不做。。那还要while干什么啊,不管while条件成不成立都是要return的。。。

答案是B
while((*s)&&(*t)&&(*t++==*s++));
这个循环的作用就是找到t,s两个字符串中第一个不相等的字符。
首先两个判断(*s)和)(*t)就是判断s和t这个两个字符串当前的字符是否是字符串结束符,如果是就退出while循坏了。最后一个判断(*t++==*s++))就是判断这两个字符串当前字符是否相等,如果不相等则退出while循环,如果相等则继续循环,并且两个字符串后移一位,指向下一个字符。
*是取字符串地址的值,而++是字符串地址后移。

最后一句return(*s-*t);
因为前面那个while循环拿到了s,t两个字符串的第一个不相等字符,所以这句就直接比较这个不相等字符大小就可以了.*s-*t,就是用s字符串当前字符的ASCII码值-t字符串当前字符的ASCII码值。如果结果为0,则s,t两个字符串相等,若相减小与0,则s<t,若大于0,则s>t

这明明是B 比较2个字符串的大小的啊怎么会是C呢?
答案错了吧

////while里面的意思是当字符串s不为\0并且t不为\0并且*s和*t所指的字符相等时什么都不做,否则return *s和*t所指的字符的asc码值之差//
///楼上的错了"=="是判断符号不是赋值"="//

将字符串s复制到字符串t中

是c啊,吓死我了,我还以为我又错了。
你仔细分析一下while中的条件啊
可以知道当两字符串中对应位置的字符相等时,才继续循环,并将
字符串所指字符的位置下移。
这样就清楚了吧!~~~~~~~

B.比较2个字符串的大小
return(*s-*t); 返回的就是长度差