24小时热门版块排行榜    

查看: 418  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lyle1993

新虫 (初入文坛)

[求助] 真诚求教

编写一个程序,比较两个字符串的大小,实现strcmp函数相同的功能,但不能直接使用strcmp函数。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
就是个挨着判断,等于输出0,大于输出1,小于输出-1
CODE:
#include
#include

int myStrCmp(const char *str1, const char *str2)
{
    int ret = 0;
    while (*str1!=0 && *str2!=0)
    {
        if (*str1>*str2)
        {
            ret = 1;
            break;
        }
        else if (*str1<*str2)
        {
            ret = -1;
            break;
        }
        str1++;
        str2++;
    }

    if (ret==0)
    {
        if (*str1==0 && *str2!=0)
        {
            ret = -1;
        }
        else if (*str1!=0 && *str2==0)
        {
            ret = 1;
        }
    }
    return ret;
}

int main()
{
    char *s1 = "test 1";
    char *s2 = "test 2";
    char *s3 = "test 1";
    char *s4 = "test";
    printf("Implemented myStrCmp():\ns1,s2: %d\ns1,s3: %d\ns1,s4: %d\n",myStrCmp(s1,s2),myStrCmp(s1,s3),myStrCmp(s1,s4));
    printf("Original strcmp():\ns1,s2: %d\ns1,s3: %d\ns1,s4: %d\n",strcmp(s1,s2),strcmp(s1,s3),strcmp(s1,s4));
  

测试结果:
CODE:
Implemented myStrCmp():
s1,s2: -1
s1,s3: 0
s1,s4: 1
Original strcmp():
s1,s2: -1
s1,s3: 0
s1,s4: 1

Process returned 0 (0x0)   execution time : 0.000 s
Press any key to continue.

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2012-12-25 21:28:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

11jxli1

禁虫 (著名写手)

感谢参与,应助指数 +1
本帖内容被屏蔽

2楼2012-12-24 10:22:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

615780236

禁虫 (知名作家)

感谢参与,应助指数 +1
本帖内容被屏蔽

3楼2012-12-24 18:33:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

上面的代码少了2行
CODE:
#include
#include

int myStrCmp(const char *str1, const char *str2)
{
    int ret = 0;
    while (*str1!=0 && *str2!=0)
    {
        if (*str1>*str2)
        {
            ret = 1;
            break;
        }
        else if (*str1<*str2)
        {
            ret = -1;
            break;
        }
        str1++;
        str2++;
    }

    if (ret==0)
    {
        if (*str1==0 && *str2!=0)
        {
            ret = -1;
        }
        else if (*str1!=0 && *str2==0)
        {
            ret = 1;
        }
    }
    return ret;
}

int main()
{
    char *s1 = "test 1";
    char *s2 = "test 2";
    char *s3 = "test 1";
    char *s4 = "test";
    printf("Implemented myStrCmp():\ns1,s2: %d\ns1,s3: %d\ns1,s4: %d\n",myStrCmp(s1,s2),myStrCmp(s1,s3),myStrCmp(s1,s4));
    printf("Original strcmp():\ns1,s2: %d\ns1,s3: %d\ns1,s4: %d\n",strcmp(s1,s2),strcmp(s1,s3),strcmp(s1,s4));
    return 0;
}

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2012-12-25 21:28:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见