| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 18974 人关注过本帖
标题:【问题请教】c语言两个字符串比较大小的问题,不使用strcmp函数
只看楼主 加入收藏
星星的故乡
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-10-29
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
【问题请教】c语言两个字符串比较大小的问题,不使用strcmp函数
题目:
将两个字符串s1,s2比较,如果s1>s2,输出一个正数;s1<s2输出一个负数,s1=s2,输出0。输出的正数或负数的绝对值应是比较的两个字符串的ASCII码的差值。例如‘A'与'C'的ASCII的差值为2,因此输出为‘-2’,不能使用strcmp函数。
程序代码:
int main()
{
        char str1[80],str2[80];
        int i=0,r;
        puts("input string1:");
        gets(str1);
        puts("input string2:");
        gets(str2);
       
        while((str1[i]==str2[i])&&(str1[i]!='\0')) //如果两个对应字符相等,且两字符串都没有结束,则i++,继续判断下一个字符;
                                                   //否则,只要两个字符不相等,或者任意字符串已经结束,则不再进行下一个字符的判断。
        {
            i++;      
        }
        if(str1[i]=='\0'&&str2[i]=='\0')    //如果同时结束,则相等
        {
            r=0;
        }
        else
        {
            r=str1[i]-str2[i];
        }
        printf("result:%d.\n",r);

    return 0;
}

疑问
while((str1[i]==str2[i])&&(str1[i]!='\0'))
我理解必须加上红色字体来判断字符串是否已经结束,但是这里为什么写的是str1,而不是str2呢?谢谢。
搜索更多相关主题的帖子: 字符串 绝对值 c语言 
2013-11-24 12:19
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:4 
程序代码:
for(...) sum1 += s1[i];//字符串1的ASCII和
for(...) sum2 += s2[i];//字符串2的....
比较sum1,sum2,输出!

仰望星空...........不忘初心!
2013-11-24 12:25
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:8 
1和2是同等地位的

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-11-24 16:50
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:8 
两个同等地位

埋头做牛,抬头做人,低头做狗
2013-11-26 08:58
快速回复:【问题请教】c语言两个字符串比较大小的问题,不使用strcmp函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066480 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved