在线编译器 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 { 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; }
这段代码试图比较两个字符串,但逻辑上存在一些问题。它先比较了字符串长度,然后根据长度输出了较短的长度或第一个不同字符的位置,但最后的输出逻辑可能不会执行到。

- 代码在 `if (len1 < len2)` 和 `else` 分支中都使用了 `return 0`,导致程序在比较完长度后立即结束,永远不会执行后面的 `if (len1 == len2)` 部分。你需要重新考虑程序的控制流程,确保所有情况都能被正确处理。
- 题目要求可能是在长度相等时输出第一个不同字符的位置,长度不等时输出较短的长度,完全相等时输出 -1。你的代码中 `else` 分支(即 `len1 >= len2` 时)直接输出了 `len2`,但长度相等时应该进入比较字符的循环,而不是直接输出长度。注意 `else` 只对应 `if (len1 < len2)`,所以当 `len1 >= len2` 时都会执行那个 `else` 块并结束程序。