(求改正后的代码)可以帮忙看一下问题在哪里吗,一共有三个测试点,两个正确,唯一一个不正确的是两个字符串的前两个字符相等,第三个不一样,我在自己编写的strcmp函数中对字符串中字符相等的情况用了continue跳出当前循环,为啥还是不对?
#include<stdio.h>
int strcmp(char *p1,char *p2){
/*********Begin*********/
int i;
for(i=0;i<110;i++)
{
if(*p1++<*p2++)
{
strcmp<0;
}else if(*p1++>*p2++)
{
strcmp>0;
}else
{
continue;
}
}
/*********End**********/
}
int main(void)
{
char a[110],b[110];
scanf("%s%s",a,b);
if(strcmp(a,b)>0)
printf("%s", a);
else
printf("%s", b);
return 0;
for循环不能到i<110啊,字符串没有那么长
#include <stdio.h>
int strcmp(char *a,char *b)
{
int i=0;
while(*(a+i) != '\0' && *(b+i) != '\0')
{
if(*(a+i) > *(b+i))
return 1;
else if(*(a+i) < *(b+i))
return -1;
i++;
}
if(*(a+i) == '\0' && *(b+i) == '\0')
return 0;
if(*(a+i) != '\0')
return 1;
return 0;
}
int main()
{
char a[110],b[110];
scanf("%s%s",a,b);
if(strcmp(a,b)>0)
printf("%s",a);
else
printf("%s",b);
return 0;
}
你的代码提供一下。
int strcmp(const char *str1,const char *str2)
{
assert(str1!=NULL && str2!=NULL);
if(str1==NULL || str2==NULL)
{
return 0;
}
int tmp=0;
while((tmp=*str1-*str2)==0&&*str1!='\0')
{
str1++;
str2++;
}
return tmp;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!