用C语言实现,请编写函数str_cmp实现两个字符串的比较。 函数原型:str_cmp(char *p1,char *p2) 说明: 设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;若s1≠s2,返回二者第1个不同字符的ASCII码差值(如“BOY”与“BAD”,第2个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果s1<s2,则输出负值。
时间: 2024-03-03 12:50:34 浏览: 45
下面是函数str_cmp的实现:
```c
int str_cmp(char *p1, char *p2) {
while(*p1 && *p2 && *p1 == *p2) {
p1++;
p2++;
}
return *p1 - *p2;
}
```
该函数首先利用while循环比较两个字符串中每一个字符的ASCII码值,直到遇到不同的字符或者字符串结束为止。如果两个字符串相等,则返回0;如果不相等,则返回第一个不同字符的ASCII码差值。最后,如果s1>s2,则输出正值;如果s1<s2,则输出负值。
相关问题
用C语言请编写函数str_cmp实现两个字符串的比较。 函数原型:str_cmp(char *p1,char *p2) 说明: 设p1指向字符串s1,p2指向字符串s2。要求当时,返回值为0;若,返回二者第1个不同字符的ASCII码差值(如“BOY”与“BAD”,第2个字母不同,“O”与“A”之差为79-65=14);如果,则输出正值;如果,则输出负值。 程序运行结果示例1: Please input two strings: China↙ Chinese↙ They are different an
下面是实现你所需功能的代码:
```c
#include <stdio.h>
int str_cmp(char *p1, char *p2);
int main() {
char s1[100], s2[100];
printf("Please input two strings: ");
scanf("%s %s", s1, s2);
int res = str_cmp(s1, s2);
if (res == 0) {
printf("They are the same string.\n");
} else if (res > 0) {
printf("The first different character has a larger ASCII code in the first string, with a value of %d.\n", res);
} else {
printf("The first different character has a larger ASCII code in the second string, with a value of %d.\n", -res);
}
return 0;
}
int str_cmp(char *p1, char *p2) {
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 != *p2) {
return *p1 - *p2;
}
p1++;
p2++;
}
if (*p1 == *p2) {
return 0;
} else if (*p1 == '\0') {
return -(*p2);
} else {
return *p1;
}
}
```
解释一下代码各部分的作用:
1. `str_cmp` 函数的原型: `int str_cmp(char *p1, char *p2)`,接收两个字符指针 `p1` 和 `p2`。
2. 在 `main` 函数中,先定义两个长度为 100 的字符数组 `s1` 和 `s2`,然后通过 `scanf` 函数读入两个字符串。
3. 调用 `str_cmp` 函数比较两个字符串,将返回值赋值给 `res`。
4. 根据 `res` 的值输出不同的结果。
`str_cmp` 函数的实现如下:
1. 利用 `while` 循环遍历两个字符串,如果遇到不同的字符,计算该字符的 ASCII 码差值并返回。
2. 如果两个字符串完全相同,返回 0。
3. 如果其中一个字符串已经遍历到结尾,另一个字符串还有字符未遍历,返回该字符串最后一个字符的 ASCII 码的相反数(为了区分是哪个字符串中出现了不同的字符)。
4. 如果两个字符串长度不同,且前面的字符都相同,返回两个字符串长度的差值。
请编写函数str_cmp实现两个字符串的比较。 函数原型:str_cmp(char *p1,char *p2) 说明: 设p1指向字符串s1,p2指向字符串s2。要求当时,返回值为0;若,返回二者第1个不同字符的ASCII码差值(如“BOY”与“BAD”,第2个字母不同,“O”与“A”之差为79-65=14);如果,则输出正值;如果,则输出负值。
下面是函数str_cmp的实现:
```c
int str_cmp(char* p1, char* p2) {
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 != *p2) {
return *p1 - *p2;
}
p1++;
p2++;
}
return *p1 - *p2;
}
```
该函数通过循环遍历两个字符串,比较每个字符是否相同。如果发现不同的字符,就返回它们的ASCII码差值。如果两个字符串都遍历完了,还没有发现不同的字符,则返回它们的长度差值。
阅读全文