试判断给出的2个字符串是否完全相等,相等则输出"Yes"和整数的位数;不相等则输出"No"和从右边数起的第一个不相等的数字的位置。请用c语言写出来
时间: 2024-12-10 21:31:21 浏览: 20
在C语言中,你可以通过逐位比较两个字符串的方式来判断它们是否完全相等,并找出第一个不相等字符的位置。下面是一个简单的示例函数:
```c
#include <stdio.h>
#include <string.h>
int compare_strings(char* str1, char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
// 检查长度是否相等
if (len1 != len2) {
printf("No\n");
return -1; // 如果长度不相等,返回-1表示找不到位置
}
// 逐位比较并记录第一个不相等字符的位置
for (int i = 0; i < len1; ++i) {
if (str1[i] != str2[i]) {
printf("No\n%d", i+1); // 输出 "No" 和 第一个不相等字符的位置(从1开始)
return i + 1;
}
}
// 如果完全相等,则输出"Yes"和长度
printf("Yes\n%d", len1);
return len1;
}
int main() {
char str1[] = "example";
char str2[] = "example";
int result = compare_strings(str1, str2);
if (result == -1) {
printf("Strings are not equal.\n");
}
return 0;
}
```
这个程序首先检查两个字符串的长度,如果长度不相等,就直接返回第一个不相等位置。然后逐个字符比较,一旦发现差异,就停止比较并输出结果。
注意:此程序假设输入的字符串都是有效的,且不包含空字符('\0')在内。在实际应用中,你可能需要处理这种情况。另外,对于第一个不相等位置,由于是从右向左计数,所以实际位置需要加1。
阅读全文