用C++编写函数,实现2个字符串按照词典顺序的比较,已知一部分函数如下#include <iostream> using namespace std; int stringcmp(char *s1, char *s2); int main() { char *str1, *str2; str1=new char[81]; str2=new char[81]; cin.getline(str1,80); cin.getline(str2,80); int cmp=stringcmp(str1, str2); cout<<cmp; delete []str1; delete []str2; return 0; } 其中 s1 指向字符串1,s2指向字符串2, 如果s1 和s2 相等,函数返回0, 如果s1和s2 不等,返回2 个字符串中从左向右第一个不相等字符的ASCII 码差值,若果s1>s2,返回正值,若果s1<s2,返回负值。
时间: 2024-01-20 18:04:28 浏览: 78
以下是用C++编写的函数,实现两个字符串按照词典顺序的比较,同时包含给定的 stringcmp 函数:
```cpp
#include <iostream>
using namespace std;
int stringcmp(char *s1, char *s2) {
int i = 0;
while (s1[i] != '\0' && s2[i] != '\0') {
if (s1[i] < s2[i]) {
return s1[i] - s2[i];
}
else if (s1[i] > s2[i]) {
return s1[i] - s2[i];
}
i++;
}
if (s1[i] == '\0' && s2[i] == '\0') {
return 0;
}
else if (s1[i] == '\0') {
return s2[i];
}
else {
return -s1[i];
}
}
int main() {
char *str1, *str2;
str1 = new char[81];
str2 = new char[81];
cin.getline(str1, 80);
cin.getline(str2, 80);
int cmp = stringcmp(str1, str2);
cout << cmp;
delete[] str1;
delete[] str2;
return 0;
}
```
在上面的代码中,我们首先定义了一个 stringcmp 函数,该函数与前面的函数实现类似,只是返回值的含义有所改变。
当两个字符不相等时,我们返回两个字符的 ASCII 码差值;当两个字符串中某个字符串到达末尾时,我们返回另一个字符的 ASCII 码值;当两个字符串完全相同时,返回 0。
在主函数中,我们首先定义了两个 char* 类型的指针 str1 和 str2,然后分别使用 new 运算符分配了 81 个字节的内存空间,用于存储两个字符串。
接下来,我们使用 cin.getline 函数从标准输入中读取两个字符串,并调用 stringcmp 函数比较它们的大小,最后输出比较结果。
最后,我们使用 delete[] 运算符释放 str1 和 str2 指向的内存空间,避免内存泄漏。
阅读全文