免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4129 | 回复: 7
打印 上一主题 下一主题

[C] 取出字符串中的一个最大值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-22 09:54 |只看该作者 |倒序浏览
5可用积分
如现有一个字符串str={1,2,3.5,5,12,15,34,23}


有一个输入的新的字符串str1,如果str1={1,2,3.5},此时打印3.5
如果str1={1,2,3.5,12},此时打印12
如果str1={1,2,12}就出错退出
也就是说打印出str1中最大的一个,并且要求str1是str中从1开始从小到大的顺序一个个排列的到str中的一个数字结束的,那个结束的数字就是要打印的
1                                 -----------> 1
1,2                              ----------->2
1,2,3.5                        ----------->3.5
1,2,3.5,12                   ----------->12
1,2,3.5,12,15,23       ----------->23
1,2,12                         ----------->error
1,2,5                           ----------->error
有什么办法?

[ 本帖最后由 WHITLACK 于 2009-1-22 10:07 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-22 10:11 |只看该作者
先将str字符串以逗号为分隔符分解得到的字符串保存到二维数组内,可以使用strtok()函数
具体方法可以参考http://bbs.chinaunix.net/viewthread.php?tid=1358044
然后对二维数组里的字符串根据strcmp()的结果进行排序

论坛徽章:
0
3 [报告]
发表于 2009-01-22 10:14 |只看该作者
出错退出那个是怎么回事阿

论坛徽章:
0
4 [报告]
发表于 2009-01-22 10:14 |只看该作者
楼主怎么突然改要求了啊

新要求怎么感觉好像前2天已经看到过啊

呵呵,终于找出来了 http://bbs.chinaunix.net/viewthread.php?tid=1355797

[ 本帖最后由 zhuhefang2006 于 2009-1-22 10:19 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-01-22 10:17 |只看该作者
1,2,3.5,12,15,23       ----------->23

按照你的意思,这个也要error的吧
不是少了34吗

论坛徽章:
0
6 [报告]
发表于 2009-01-22 11:04 |只看该作者
我是冲着分来的
LZ的例子是有问题的,但是要求很明确。
另外不要把问题复杂化。
思路:
1、判断str1是不是str的头子字符串。是,3;不是,2。
2、打印Error,退出。
3、取str1的最后一个,。有,4,没有,5。
4、打印,后面的字符串,退出
5、打印str1,退出。

#include <stdio.h>
#include <string.h>

#define DELIMER         ','

int main(int argc, char **argv)
{
        const char *str="1,2,3.5,5,12,15,34,23";

        if (argc < 2)
        {
                printf("Usage: %s substr\n", argv[0]);
                return -1;
        }

        printf("Input substr is: %s\n", argv[1]);

        if (0 == strncmp(str, argv[1], strlen(argv[1])))
        {
                char *p = strrchr(argv[1], DELIMER);
                if (p)
                        printf("Substr's Max number is: %s\n", p + 1);
                else
                        printf("Substr's Max number is: %s\n", argv[1]);
        }
        else
        {
                printf("Error\n";
        }

        return 0;
}

[[i] 本帖最后由 soul_of_moon 于 2009-1-22 11:05 编辑 [/i]]

论坛徽章:
0
7 [报告]
发表于 2009-01-22 13:35 |只看该作者
楼主需要的不是怎么解决这个问题,而是再好好的学习C语言。

论坛徽章:
0
8 [报告]
发表于 2009-01-22 13:50 |只看该作者
原帖由 zhuhefang2006 于 2009-1-22 10:14 发表
楼主怎么突然改要求了啊

新要求怎么感觉好像前2天已经看到过啊

呵呵,终于找出来了 http://bbs.chinaunix.net/viewthread.php?tid=1355797

嗯~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP