2.编写一个程序,其中用户自定义函数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-22 19:56:57 浏览: 50
下面是三种不同的实现方式:
1. 调用函数时实参用数组名,函数形参用指针变量。
```c
#include <stdio.h>
int strcompare(char *str1, char *str2);
int main()
{
char s1[100], s2[100];
printf("Input two strings:\n");
scanf("%s%s", s1, s2);
printf("Result: %d\n", strcompare(s1, s2));
return 0;
}
int strcompare(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. 调用函数时实参和函数形参都用指针变量。
```c
#include <stdio.h>
int strcompare(char *str1, char *str2);
int main()
{
char s1[100], s2[100];
printf("Input two strings:\n");
scanf("%s%s", s1, s2);
printf("Result: %d\n", strcompare(&s1[0], &s2[0]));
return 0;
}
int strcompare(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. 调用函数时实参用指针变量,函数形参用数组名。
```c
#include <stdio.h>
int strcompare(char str1[], char str2[]);
int main()
{
char s1[100], s2[100];
printf("Input two strings:\n");
scanf("%s%s", s1, s2);
printf("Result: %d\n", strcompare(s1, s2));
return 0;
}
int strcompare(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];
}
```
阅读全文