实现字符串的比较(strcmp()功能)

题目:

实现比较两个字符串的大小(函数strcmp()的功能)。

例如:

输入:abcd和abcd 输出:0

输入:abcd和bbcd 输出:-1

输入:cbcd和abcd 输出:2

解题思路:

关键就是模拟关于strcmp函数的比较逻辑和返回值。

假设有字符串a和字符串b两个字符串进行比较:

首先会进行比较二者的第一个字符,如果第一个字符相同,那么就继续比较下一个字符,如果第一个字符不相同,就返回一个非零的整形数据(ASCII码差值)。(如果a中字符大于b中字符,则返回一个正数,反之返回一个负数)

依次比较,直到比较到字符串的结尾,如果每一个字符都相等,则返回0;

程序代码:

#include <stdio.h>
int cmp_fun(char *,char *);
int main(int argc, char *argv[])
{ 
    char a[50], b[50];
    int ret;
    puts("请输入字符串a:");
    gets(a);
    puts("请输入字符串b:");
    gets(b);
    ret = cmp_fun(a,b);
    printf("比较的结果为(正数:a>b,负数:a<b,0:a=b):%d\n",ret);
    return 0;
} 
int cmp_fun(char *p, char *q)
{
    while((*p != '\0') && (*p == *q)){
    p++;
    q++;
    } //直到字符串a结束或者两个字符串出现不相等的字符时退出循环
    return *p - *q;
//当因为字符串a结束导致循环结束时,如果字符串b也正好结束,那么a=b
//否则二者一定不相等,需要做减法判断大小关系
}

运行结果:

相等:

请输入字符串a:
hello
请输入字符串b:
hello
比较的结果为(正数:a>b,负数:a<b,0:a=b):0

 a>b:

请输入字符串a:
abcdef
请输入字符串b:
abcde
比较的结果为(正数:a>b,负数:a<b,0:a=b):102

a<b: 

请输入字符串a:
hello
请输入字符串b:
hello123
比较的结果为(正数:a>b,负数:a<b,0:a=b):-49
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值