Онлайн компилятор 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开始计数)。如果两个字符串完全相同,则输出-1。代码通过手动计算字符串长度,然后根据长度关系逐个字符比较。

你的代码逻辑基本正确,但有一个边界情况没有处理好。当两个字符串长度相等时,你的代码直接输出-1,但此时如果字符串内容不同,应该输出第一个不同字符的位置,而不是-1。

- 提示1:当len1等于len2时,你跳过了字符比较,直接输出-1。但此时两个字符串可能并不相等,需要先逐字符比较。
- 提示2:考虑将长度相等的情况也纳入比较循环中,或者调整代码结构,使得所有情况都先进行逐字符比较,再根据比较结果决定输出。