在线编译器 C

#include <stdio.h> #include <string.h> int main() { char s1[1001]; char s2[1001]; gets(s1); gets(s2); int len1=strlen(s1); int len2=strlen(s2); for(int i=0;i<len1&&i<len2;i++) {if (s1[i]!=s2[i]){ printf("%d",i); return 0; } if(len1==len2){ printf("-1"); } if (len1<len2){ printf("%d",len1);} if (len1>len2){ printf("%d",len2); } } return 0; }
这段代码试图比较两个字符串,找出第一个不同字符的位置,但逻辑上有问题。代码在循环内部处理了所有输出情况,导致输出可能不正确或重复。

- 循环条件 `i<len1&&i<len2` 只会在两个字符串都还有字符时执行。如果两个字符串完全相同,循环结束后没有输出任何结果,但题目可能要求输出 -1。
- 判断 `len1==len2` 并输出 -1 的代码放在了循环内部,这会导致每次循环都检查一次,而且如果字符串有不同字符,它也会在输出不同位置后继续执行,可能输出多余的结果。应该只在循环结束后判断是否完全相等。