这是题目要求,下面是我的代码,跑出来的数据不对
```c
#include<stdio.h>
int sequence_len(char* p)
{
int i =0;
for (; *p != '\0'; p++,i++)
if (*p > *(++p))
break;
return i;
}
int main(void)
{
char mystring[] = "acb" ;
printf("%d\n", sequence_len (mystring));
return 0;
}
```
if ( * p > * (p+1))
不能用++p,否则加上for循环的p++,每次循环p向后移动两个位置了啊
就算这样也还有问题,可能p是最后一个字符,但 * (p+1)就是'\0'了
#include<stdio.h>
int sequence_len(char* p)
{
int i =0;
while(*p != '\0')
{
i++;
if(*(p+1) == '\0')
break;
if(*p > *(p+1))
break;
p++;
}
return i;
}
int main(void)
{
char mystring[] = "acb" ;
printf("%d\n", sequence_len (mystring));
return 0;
}
改成下面的代码
#include<stdio.h>
int sequence_len(char* p)
{
int i =0;
for (; *p != '\0'; p++,i++)
if (*p > *(p+1))
break;
return i;
}
int main(void)
{
char mystring[] = "acb" ;
printf("%d\n", sequence_len (mystring));
return 0;
}
如果对你有帮助,望采纳
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!