程序员考试中的一道很简单的c试题,有个问题
int strcmp(char *s,char *t);
{
while(*s && *t && ________)
{s++,t++};
return_______;}
请问第一个空填什么?这个while循环在这里的作用是什么?
问题点数:30、回复次数:14Top
1 楼netbian(寻欢のLEE)回复于 2002-08-22 10:00:34 得分 0
这是做什么用的?Top
2 楼liushmh(想开书店:) )回复于 2002-08-22 10:01:50 得分 8
1,*s==*t
2,*s-*t
这个while循环在这里的作用是什么?
判断所有字符
Top
3 楼mengli1(清风使)回复于 2002-08-22 10:02:22 得分 0
程序用于比较两个字符的大小,大于输出1,小于输出-1,等于输出0Top
4 楼mengli1(清风使)回复于 2002-08-22 10:05:19 得分 0
我觉得这是一个函数
用实参分别传递给*s,*t,传递进来是什么就是什么,为什么说判断所有字符Top
5 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2002-08-22 10:13:51 得分 2
*s=*t
反正比就可以了。Top
6 楼mengli1(清风使)回复于 2002-08-22 10:17:31 得分 0
不理解,觉得while在这里完全可以去掉Top
7 楼ygbxh(一个笨小孩)回复于 2002-08-22 10:18:11 得分 2
这是strcmp函数的源代码吧
strcmp用来比较两个字符串*s,*t的大小
返回值大于0, 则s>t
返回值小于0, 则s<t
返回值等于0, 则两字符串相等
Top
8 楼liushmh(想开书店:) )回复于 2002-08-22 10:19:22 得分 4
这里是循环判断每个字符,如果去掉就只能比较单个字符了
do you understand?Top
9 楼Taliux(彻夜孤灯)回复于 2002-08-22 10:21:52 得分 2
*s==*t
*s-*t
Top
10 楼ygbxh(一个笨小孩)回复于 2002-08-22 10:24:16 得分 2
int strcmp(char *s,char *t);
{
while(*s && *t && *s==*t) //当字符值相等时取下一字符值
{s++,t++};
return (*s-*t);
}
Top
11 楼mengli1(清风使)回复于 2002-08-22 10:27:18 得分 0
int strcmp(char *s,char *t);
它们可以比较字符串吗?char *s,char *t 我的理解这两个形参本来就是单字符嘛?
如果是比较字符串的话,应该写成 char s[n]和char t[n]才对啊,这才是比较
多个字符Top
12 楼mengli1(清风使)回复于 2002-08-22 10:30:07 得分 0
“当字符值相等时取下一字符值”既然相等。那s,t的下一个字符还不是一样相等?有此必要吗?Top
13 楼Tommy()回复于 2002-08-22 10:37:07 得分 10
mengli1(清风使)
还是先补一下指针方面的内容吧。
C中的数组和指针的用法本来就差不多,char*指向是可以是单个字符,也可以是一个字符数组。在作为形参时,char*s和chars[]是一个意思。
"aa"和"ab"两个字符串,第一个字符值相同,但是第二个字符值就不一样了。Top
14 楼ygbxh(一个笨小孩)回复于 2002-08-23 10:47:19 得分 0
to mengli1(清风使)
你的理解是不正确的。char *s,char *t 两个字符型指针型参并不表示它们是单个字符,而是说明s和t的值是两个地址值。
函数被调用时,s和t分别被赋予了两个字符串(假设位arr1[]、arr2[])的首地址。*s=arr1[0],*t=arr2[0]。取下一字符时,*s=arr1[1],*t=arr2[1]。Top




