实现函数 int cmp(char* s1, char* s2); 判断两个字符串大小,若相同输出 0,s 1 >s 2 输出 1,s 1 <s 2 输出 -1。 函数接口定义: int cmp(char* s1, char* s2);
时间: 2024-05-16 12:18:11 浏览: 5
可以按照以下方式实现该函数:
```cpp
int cmp(char* s1, char* s2) {
while (*s1 && *s2 && *s1 == *s2) { // 如果两个字符串当前字符相同,则继续比较下一个字符
s1++;
s2++;
}
if (*s1 == '\0' && *s2 == '\0') { // 如果两个字符串同时结束,说明它们相等
return 0;
} else if (*s1 > *s2 || (*s1 && !*s2)) { // 如果 s1 大于 s2,或者 s1 还没结束但是 s2 已经结束了(即 s2 是 s1 的子串),则返回 1
return 1;
} else { // 否则 s1 小于 s2,返回 -1
return -1;
}
}
```
这个函数的基本思路是先比较两个字符串当前位置的字符是否相同,如果相同则继续比较下一个字符,直到有一个字符串结束或者两个字符串当前位置的字符不相同为止。如果两个字符串同时结束,则说明它们相等;否则,需要进一步比较哪个字符串更大或者更小。注意在比较过程中要考虑到字符串可能存在子串的情况。
相关问题
本关任务:编写函数比较字符串大小,若有两个字符串s1和s2,s1与s2相等返回0,s1>s2返回1,s1<s2返回-1。c语言
好的,以下是实现该功能的 C 语言代码示例:
```c
#include <stdio.h>
#include <string.h>
int cmpString(char s1[], char s2[]) {
int len1 = strlen(s1), len2 = strlen(s2);
int minLen = len1 < len2 ? len1 : len2;
for (int i = 0; i < minLen; i++) {
if (s1[i] < s2[i]) {
return -1;
} else if (s1[i] > s2[i]) {
return 1;
}
}
if (len1 == len2) {
return 0;
} else if (len1 < len2) {
return -1;
} else {
return 1;
}
}
int main() {
char s1[100], s2[100];
printf("请输入第一个字符串:\n");
scanf("%s", s1);
printf("请输入第二个字符串:\n");
scanf("%s", s2);
int res = cmpString(s1, s2);
if (res == 0) {
printf("两个字符串相等\n");
} else if (res == 1) {
printf("%s > %s\n", s1, s2);
} else {
printf("%s < %s\n", s1, s2);
}
return 0;
}
```
函数 `cmpString` 接受两个字符数组作为参数,依次比较它们的每一个字符,如果遇到不同的字符,就可以根据它们的 ASCII 码值来判断哪个字符串更大。如果两个字符串前面的字符都相同,就比较它们的长度,长度更长的字符串更大。在 `main` 函数中,我们获取用户输入的两个字符串,调用 `cmpString` 函数进行比较,并输出比较结果。
用c语言编写函数strcomp(s1, s2),实现两个字符串的比较,返回值分别为1、0、-1表示s1>s2, s1=s2, s1<s2 的情况。
好的,以下是一个可能的C语言实现:
```c
#include <stdio.h>
#include <string.h>
int strcomp(char *s1, char *s2) {
int cmp = strcmp(s1, s2);
if (cmp == 0) {
return 0;
} else if (cmp > 0) {
return 1;
} else {
return -1;
}
}
int main() {
char s1[] = "hello";
char s2[] = "world";
int result = strcomp(s1, s2);
printf("%d\n", result); // 输出-1,因为s1 < s2
return 0;
}
```
这个函数使用了C语言标准库中的strcmp函数来比较两个字符串。strcmp函数的返回值为零表示两个字符串相等,大于零表示第一个字符串大于第二个字符串,小于零表示第一个字符串小于第二个字符串。根据返回值,我们可以返回1、0或-1,分别表示s1>s2、s1=s2或s1<s2的情况。在main函数中,我们演示了如何使用这个函数来比较两个字符串。