| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 537 人关注过本帖
标题:智能字符串排序问题 !!
取消只看楼主 加入收藏
阿释的猫
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-30
收藏
 问题点数:0 回复次数:0 
智能字符串排序问题 !!
在2010年百度公司的一次校园招聘笔试中,要求应聘者设计一个strnumcmp函数。对比普通的strcmp函数,差别在于,当字符串中包含数字时,比较数字大小。数字大小相同或

不含数字时,仍然沿用原来的strcmp方式。所有不含数字的字符串均小于含数字的字符串。每个字符串的长度范围为1 ~ 30,而其中包含的数字个数范围为0 ~ 8,且数字在一

个字符串中是连续的。例如:strnumcmp的判定结果:"abc"<"abc#"<"abcd"<"abc1"<"abc2"<"abc10"而一般的strcmp的判定结果:"abc"<"abc#"<"abc1"<"abc10"<"abc2"<"abcd"写一个程序,用strnumcmp函数对一组字符串按升序排序。

Input

n个由一个空格分隔的字符串(1≤n≤100)

Output

排序后的n个字符串,两个字符串之间用一个空格分开。最后有一个换行符

Sample Input

abc# abc1 abc10 abcd abc2 abc

Sample Output



abc abc# abcd abc1 abc2 abc10
程序代码:
#include <stdio.h>
#include <string.h>

/*判断一个字符是否是数字字符,即'0'到'9'之间的字符,如果是数字字符返回1,否则返回0*/int isNum(char c)
{
    if(c >= '0' && c <= '9') return 1;
    return 0;
}
/*智能字符串判断函数——   str1大于str2则返回1,小于返回-1,等于返回0*/int strnumcmp(char * str1, char * str2)
{
    /*除去两个字符串前面相同的部分*/ while(*str1 == *str2)
    {
        if(*str1 == '\0' && *str2 == '\0') return 0;
        str1++;
        str2++;
    }   /*若字符串比较的部分包含数字*/ if(*str1 <= '9' && *str1 >= '1' && '1' <= *str2 && *str2 <= '9')
    {
        int flag = *str1 > *str2 ? 1 : -1;
        while(1)
        {
            str1++;
            str2++; /*str1是数字,str2不是数字。*/
            if(isNum(*str1) == 1 && isNum(*str2) == 0) return 1; /*str2是数字,str1不是数字。*/
            else if(isNum(*str2) == 1 && isNum(*str1) == 0) return -1; /*str1和str2都不是数字*/
            else if(isNum(*str1) == 0 && isNum(*str2) == 0) return flag;
        }
    } /*若字符串比较的部分不包含数字*/ return *str1 > *str2 ? 1 : -1;
}
void main()
{
    char str[100][30], temp[30];
    int n, i = 0, j, k;
    while(scanf("%s", str[i]) != EOF) i++;
    n = i;
    for(i = 0; i < n - 1; i++)
    {
        k = i;
        for(j = i + 1; j < n; j++) if(strnumcmp(str[j], str[k]) < 0) k = j;
        strcpy(temp, str[k]);
        strcpy(str[k], str[i]);
        strcpy(str[i], temp);
    }
    for(i = 0; i < n; i++) printf("%s ", str[i]);
}



高手帮忙改写下
把代码改对
万分感谢
在线等
搜索更多相关主题的帖子: 百度公司 校园 字符串 应聘者 
2011-06-30 18:32
快速回复:智能字符串排序问题 !!
数据加载中...
 
   



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

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