编写函数myStrcmp,实现字符串比较的功能。(10分) 题目内容: 以下为myStrcmp的函数原型,功能为比较str1和str2两个字符串的大小。返回结果如下: ① str1小于str2,返回-1; ② str1等于str2,返回0; ③ str1大于str2,返回1。 在主函数中调用gets函数输入2个字符串,调用该函数比较,输出该函数的返回值。 int myStrcmp( char *str1, char *str2); 输入格式: 两个字符串(不多于20个字符),每个字符串以回车结束。 输出格式: 一个整数,1,0,或者-1。如果大于则输出1,相等则输出0,小于则输出-1. 输入样例: abcd abcde
时间: 2024-02-15 15:05:20 浏览: 77
好的,以下是myStrcmp函数的实现代码:
```c
#include <stdio.h>
int myStrcmp(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] < str2[i]) {
return -1;
} else if (str1[i] > str2[i]) {
return 1;
}
i++;
}
if (str1[i] == '\0' && str2[i] == '\0') {
return 0;
} else if (str1[i] == '\0') {
return -1;
} else {
return 1;
}
}
int main() {
char str1[21], str2[21];
gets(str1);
gets(str2);
int result = myStrcmp(str1, str2);
printf("%d", result);
return 0;
}
```
输入样例:
```
abcd
abcde
```
输出样例:
```
-1
```
相关问题
编写函数myStrcmp,实现字符串比较的功能
下面是一个简单的实现:
```c
int myStrcmp(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' || str2[i] != '\0') {
if (str1[i] != str2[i]) {
return (str1[i] < str2[i]) ? -1 : 1;
}
i++;
}
return 0;
}
```
这个函数会逐个比较两个字符串的字符,直到遇到不同的字符或者其中一个字符串结束。如果遇到不同的字符,就返回它们的 ASCII 码的差值,如果 str1[i] 小于 str2[i],就返回 -1,否则返回 1。如果两个字符串一直都相等,就返回 0。
[10] 编写函数mystrcmp实现将两个字符串的比较。并在主函数中调用该函数实现两个字符串的比较。
要编写一个名为`mystrcmp`的函数来实现两个字符串的比较,你可以使用标准的字符逐个比较的方法。这里我们将不考虑大小写,如果想保留大小写差异,只需去掉相应的转换步骤即可。以下是一个简单的`mystrcmp`函数的实现:
```c
#include <stdio.h>
#include <string.h>
// 自定义字符串比较函数(忽略大小写)
int mystrcmp(const char *str1, const char *str2) {
while (*str1 != '\0' && *str2 != '\0') { // 检查字符串是否结束
if (tolower(*str1) != tolower(*str2)) { // 将字符转为小写进行比较
return *str1 - *str2; // 如果不相等,返回它们的差值(非零表示不相等)
}
str1++;
str2++;
}
// 如果一个是另一个的前缀,返回正负号
if (*str1 == '\0' && *str2 != '\0') {
return -1;
} else if (*str1 != '\0' && *str2 == '\0') {
return 1;
} else {
return 0; // 如果长度相同且所有字符都匹配,返回0表示相等
}
}
int main() {
const char *str1 = "Hello";
const char *str2 = "hello";
int result = mystrcmp(str1, str2);
if (result > 0) {
printf("'%s' is lexicographically greater than '%s'\n", str1, str2);
} else if (result < 0) {
printf("'%s' is lexicographically less than '%s'\n", str1, str2);
} else {
printf("'%s' and '%s' are equal\n", str1, str2);
}
return 0;
}
```
在这个例子中,`mystrcmp`函数首先检查两个字符串中的字符是否相等,如果不等则返回差值;如果遍历完字符串还没找到不相等的字符,则根据剩余的字符长度判断哪个是前缀并返回相应结果。
阅读全文