用c编写,要求使用指针和函数,编写程序,实现两字符串的比较,要求程序中不能使用库函数strcmp。如字符串1>字符串2,输出1;如字符串1=字符串2,输出0;如字符串1<字符串2,输出-1。每一行代码要求标注清楚什么意思
时间: 2023-09-04 12:04:01 浏览: 90
### 回答1:
以下是使用指针和函数实现两字符串比较的C程序:
```c
#include <stdio.h>
/**
* @brief 比较两个字符串的大小
*
* @param str1 字符串1的起始地址,使用指针传递
* @param str2 字符串2的起始地址,使用指针传递
* @return int 返回值为1表示str1大于str2,返回值为0表示str1等于str2,返回值为-1表示str1小于str2
*/
int compare_strings(char *str1, char *str2){
// 循环比较两个字符串的每一个字符,直到遇到'\0'结束
while(*str1 && *str2){
// 如果str1当前字符大于str2当前字符,返回1
if(*str1 > *str2){
return 1;
}
// 如果str1当前字符小于str2当前字符,返回-1
else if(*str1 < *str2){
return -1;
}
// 否则继续比较下一个字符
else{
str1++;
str2++;
}
}
// 如果str1比str2长,返回1
if(*str1){
return 1;
}
// 如果str2比str1长,返回-1
else if(*str2){
return -1;
}
// 否则两个字符串相等,返回0
else{
return 0;
}
}
int main(){
char str1[100], str2[100];
printf("请输入字符串1:");
scanf("%s", str1);
printf("请输入字符串2:");
scanf("%s", str2);
int result = compare_strings(str1, str2);
printf("字符串1%s字符串2\n", result == 1 ? "大于" : (result == -1 ? "小于" : "等于"));
return 0;
}
```
代码说明:
1. `compare_strings`函数接受两个指针参数,分别指向两个字符串的起始位置。
2. 函数使用`while`循环比较两个字符串的每一个字符,直到遇到`\0`结束。
3. 如果两个字符串当前字符不同,直接返回当前字符大小的比较结果(`1`表示str1大于str2,`-1`表示str1小于str2)。
4. 如果两个字符串当前字符相同,继续比较下一个字符。
5. 如果其中一个字符串比另一个字符串长,说明长的字符串比短的字符串大,直接返回1或-1。
6. 如果两个字符串长度相同,说明两个字符串相等,返回0。
7. 在`main`函数中,读入两个字符串,调用`compare_strings`函数进行比较,最终输出比较结果。
注意:本程序中没有对输入的字符串长度做限制,如果输入的字符串超过了数组的长度,可能会导致程序出错。
### 回答2:
下面是一个用C编写的程序,使用指针和函数实现两字符串的比较,同时不能使用库函数strcmp。
```c
#include <stdio.h>
int compareStrings(char *str1, char *str2) {
// 循环遍历字符串的每个字符进行比较
while (*str1 != '\0' && *str2 != '\0') {
// 如果当前字符不相等,则根据ASCII码比较大小
if (*str1 != *str2) {
return (*str1 > *str2) ? 1 : -1; // 如果str1大于str2,返回1;否则返回-1
}
str1++; // 指针指向下一个字符
str2++;
}
// 当循环结束时,有以下三种情况:
// 1. 字符串1和字符串2都遍历完了,即两个字符串相等
// 2. 字符串1比字符串2先遍历完,即字符串1较短
// 3. 字符串2比字符串1先遍历完,即字符串2较短
if (*str1 == '\0' && *str2 == '\0') {
return 0; // 字符串1和字符串2相等,返回0
}
else if (*str1 == '\0') {
return -1; // 字符串1较短,返回-1
}
else {
return 1; // 字符串2较短,返回1
}
}
int main() {
char str1[100], str2[100];
printf("请输入字符串1:");
scanf("%s", str1);
printf("请输入字符串2:");
scanf("%s", str2);
// 调用函数比较字符串,并输出结果
int result = compareStrings(str1, str2);
printf("比较结果:%d\n", result);
return 0;
}
```
以上是一个使用指针和函数实现字符串比较的C程序。程序中通过`compareStrings`函数比较两个字符串。在循环中,使用指针逐个比较字符串的字符,并根据ASCII码比较大小。
如果两个字符串的字符完全相等,则返回0;如果字符串1大于字符串2,则返回1;如果字符串1小于字符串2,则返回-1。
在`main`函数中,先按照提示输入两个字符串,然后调用`compareStrings`函数进行字符串比较,并输出结果。
请注意标注的清楚明了,方便理解和使用。
### 回答3:
下面是一种实现给定两个字符串比较的C程序,要求使用指针和函数,并且不能使用库函数strcmp。
```c
#include <stdio.h>
// 比较两个字符串的函数
int compare_strings(char* str1, char* str2) {
// 循环遍历字符串,直到遇到字符串结束符'\0'
while (*str1 != '\0' || *str2 != '\0') {
// 如果当前字符不相等,则返回字符ASCII码之差的符号
if (*str1 != *str2) {
return (*str1 > *str2) ? 1 : -1;
}
// 移动指针到下一个字符
str1++;
str2++;
}
// 如果两个字符串全部相等,则返回0
return 0;
}
int main() {
char str1[100], str2[100];
printf("请输入字符串1: ");
gets(str1);
printf("请输入字符串2: ");
gets(str2);
// 调用比较函数进行比较,并输出结果
int result = compare_strings(str1, str2);
printf("比较结果: %d\n", result);
return 0;
}
```
代码解析:
1. 定义一个函数`compare_strings`用于比较两个字符串,参数为字符串指针`str1`和`str2`,返回值为整数类型。
2. 在`compare_strings`函数中,使用`while`循环来遍历字符串,判断两个字符串的当前字符是否相等。
3. 如果两个字符不相等,则通过比较它们的ASCII码大小,返回一个对应的符号表示字符串的大小关系。
4. 如果两个字符串全部相等,则返回0。
5. 在`main`函数中,定义两个字符数组`str1`和`str2`用于存储输入的字符串。
6. 使用`gets`函数从标准输入获取字符串,并保存到字符数组中。
7. 调用`compare_strings`函数进行字符串比较,并将比较结果保存到`result`变量中。
8. 最后,使用`printf`函数输出比较结果。
阅读全文