编写算法实现字符串str1和str2的比较操作,要求比较结果包括相等和不相等两种情况

编写算法实现字符串str1和str2的比较操作,要求比较结果包括相等和不相等两种情况


题目分析:

题目结果要求给出相同和不相同两种答案,字符串相同?在java内,str1 == str2为true的条件是,str1、str2必须是同一地址的字符串,也就是说他们是同身不同名成立,而如果地址不一样,即便字符串长得一模一样,str1 == str2还是不会成立的,此时str1.equals(str2)会成立。但是在C语言里面没有String这个说法,只有字符数组来顶替字符串String,所以要看两个字符串是否相等,是比较两个字符串的字典序:
从前到后挨个比较,如果两个字符一样,那么继续比较下一个字符,如果不一样,那么字典序大的那一个字符所在的字符串大一些

如果str1 > str2,返回1

如果str1 < str2,返回-1

如果str1 = str2,返回0

在这里说明一下C、java中字符串比较容易出的bug

C:strcmp(char str1[],char str2[])->比较的是两字符串的字典序大小
java:等于等于号“==”->比较的是两字符串的地址是否相同,即是不是同一个字符串
java:str1.equals(str2),比较的不是ascll码,只要str1和str2长得一模一样就成立,和地址没有关系,即不管是不是同一个字符串,只要长得一样就行


考点:

太简单,没有考点。。。。。。


代码实现:

#include<stdio.h>
#include<stdlib.h>
/*字符串比较函数,相同返1,否则返0*/
int strcompare(char str1[], char str2[])
{
    int size1 = 0, size2 = 0;             //用来累计字符ascll码之和
    for (int i = 0; str1[i] != '\0'; i++)
        size1 += (int)str1[i];            //加上字符的(int)即ascll码
    for (int i = 0; str2[i] != '\0'; i++)
        size2 += (int)str2[i];
    if (size1 == size2)                   //字符串大小一样
        return 1;
    else
        return 0;
}
int main()
{
    char str1[] = "aseff";
    char str2[] = "assff";
    char str3[] = "aesff";
    if (strcompare(str1, str2))         //比较str1和str2
        printf("%s和%s相同!\n",str1,str2);
    else
        printf("%s和%s不相同!\n", str1, str2);
    if (strcompare(str1, str3))
        printf("%s和%s相同!\n", str1, str3);
    else
        printf("%s和%s不相同!\n", str1, str3);
    system("pause");
    return 0;
}

运行结果:




代码编译器:Dev C++
ok,再见

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值