这题选什么?为什么?

以下与库函数strcmp(char*s,char*t)的功能相等的程序段是()A.intstrcmp1(char*s,char*t){for(;*s++==*t++;)i... 以下与库函数strcmp(char *s,char *t)的功能相等的程序段是()
A.int strcmp1(char *s,char *t)
{
for(;*s++==*t++;)
if(*s=='\0')
return 0;
return (*s-*t);
}
B.int strcmp2(char *s,char *t)
{
for(;*s++==*t++;)
if(!*s)
return 0;
return (*s-*t);
}
C.int strcmp3(char *s,char *t)
{
for(;*t==*s;)
{
if(!*t)
return 0;
t++;
s++;
}
return (*s-*t);
}
D.int strcmp4(char *s,char *t)
{
for(;*s==*t;s++,t++)
if(!*s)
return 0;
return (*t-*s);
}
展开
 我来答
wchyumo2011
2015-06-16 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2775万
展开全部
正确答案选C
不能在for循环中判断条件时自加一,否则在函数体中的if判断的就不是当前位置的值了,所以AB错误;
D中最后的return (*t-*s)反了,应该是return (*s-*t)
标准函数如下:
int strcmp(const char *str1,const char *str2)
{
/*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,
return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/
while(*str1 == *str2)
{
if(*str1 == '\0')
return0;

str1++;
str2++;
}
return *str1 - *str2;
}
更多追问追答
追问
if()return 0;这一句话,返回0是不是代表两个字符串比较的结果
结果反应出两个字符串是相同的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式