Online Compiler C

#include <stdio.h> int main() { char a[1001] = {0}, b[1001] = {0}; int len1 = 0, len2 = 0; scanf("%s%s", a, b); for (int i = 0; a[i] != 0; i++) { len1++; } for (int i = 0; b[i] != 0; i++) { len2++; } if (len1 < len2) { printf("%d", len1); return 0; } else if (len1 > len2) { printf("%d", len2); return 0; } if (len1 == len2) { for (int i = 0; a[i] != '\0'; i++) { if (a[i] != b[i]) { printf("%d", i); return 0; } } } else printf("%d", -1); return 0; }
这段代码比较两个字符串的长度和内容,但逻辑上存在一些问题。它先比较长度,如果长度不同就输出较短的长度;如果长度相同,则逐个字符比较,输出第一个不同字符的位置;最后还有一个永远不会执行的else分支。

- 代码中 `else` 分支的 `printf("%d", -1)` 永远不会执行,因为前面的 `if (len1 == len2)` 已经覆盖了所有情况,而且 `else` 对应的 `if` 条件不成立时程序已经在前面的分支返回了。你需要重新考虑当两个字符串完全相同时应该输出什么,目前代码在这种情况下没有输出任何内容就结束了。

- 注意题目要求:当两个字符串完全相等时,应该输出什么?你的代码目前没有处理这种情况,会直接结束而不输出结果。