这题选什么?为什么?
以下与库函数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);
} 展开
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);
} 展开
1个回答
展开全部
正确答案选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;
}
不能在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是不是代表两个字符串比较的结果
结果反应出两个字符串是相同的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询