Онлайн компилятор 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) { for (int i = 0; i < len1; i++) { if (a[i] != b[i]) { printf("%d", i); return 0; } } printf("%d", len1); return 0; } else if (len1 > len2) { for (int i = 0; i < len2; i++) { if (a[i] != b[i]) { printf("%d", i); return 0; } } printf("%d", len2); return 0; } printf("%d", -1); return 0; }
这段代码比较两个字符串,并输出它们第一个不同字符的位置(从0开始计数)。如果其中一个字符串是另一个的前缀,则输出较短字符串的长度。代码逻辑基本正确,但有一个边界情况可能没有处理好。

- 当两个字符串完全相同时,程序会进入 `len1 <= len2` 的分支,循环结束后输出 `len1`,这是正确的。但注意,如果 `len1 == len2` 且字符串相同,输出的是 `len1`,而题目可能期望输出 `-1` 或其他值?请确认题目要求:当两个字符串完全相等时,应该输出什么?你的代码在这种情况下输出了 `len1`,而不是最后的 `-1`。

- 最后的 `printf("%d", -1);` 实际上永远不会被执行到,因为所有情况都在前面的分支中 `return 0` 了。如果题目要求当字符串完全相等时输出 `-1`,那么你需要调整逻辑,让程序在完全相等时走到这个输出。