使用c语言编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ;分别有如下要求:(1)调用函数时实参用数组名,函数形参用指针变量。(2)调用函数时实参和函数形参都用指针变量。(3)调用函数时实参用指针变量,函数形参用数组名。[注]:(1)要求当s1== s2时,函数返回值为0;如果s1≠ s2,返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1<s2,则输出负值。(2)两个字符串s1、s2由main函数输入,strcompare函数的返回值也由main函数输出。
时间: 2024-02-18 12:03:40 浏览: 101
C语言程序设计-编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不能使用strcpy函数。拷贝时,
5星 · 资源好评率100%
好的,以下是程序代码:
```c
#include <stdio.h>
#include <string.h>
int strcompare1(char *str1, char *str2); //声明函数1
int strcompare2(char *str1, char *str2); //声明函数2
int strcompare3(char str1[], char str2[]); //声明函数3
int main() {
char s1[100], s2[100];
printf("请输入字符串s1:");
scanf("%s", s1);
printf("请输入字符串s2:");
scanf("%s", s2);
//调用函数1
printf("调用函数1,返回值为:%d\n", strcompare1(s1, s2));
//调用函数2
char *p1 = s1, *p2 = s2;
printf("调用函数2,返回值为:%d\n", strcompare2(p1, p2));
//调用函数3
printf("调用函数3,返回值为:%d\n", strcompare3(s1, s2));
return 0;
}
//函数1:调用时实参用数组名,函数形参用指针变量
int strcompare1(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
//函数2:调用时实参和函数形参都用指针变量
int strcompare2(char *str1, char *str2) {
int i = 0;
while (*(str1 + i) != '\0' && *(str2 + i) != '\0') {
if (*(str1 + i) != *(str2 + i)) {
return *(str1 + i) - *(str2 + i);
}
i++;
}
return *(str1 + i) - *(str2 + i);
}
//函数3:调用时实参用指针变量,函数形参用数组名
int strcompare3(char str1[], char str2[]) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
```
程序说明:
1. 主函数中先输入两个字符串 s1 和 s2。
2. 分别调用三个函数,输出它们的返回值。
3. 函数1、函数2、函数3 分别实现了三种不同的调用方式,但实现的功能都是比较两个字符串的大小。
输出示例:
```
请输入字符串s1:BOY
请输入字符串s2:BAD
调用函数1,返回值为:14
调用函数2,返回值为:14
调用函数3,返回值为:14
```
阅读全文