首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编撰expand(s1,s2)

2013-04-20 
编写expand(s1,s2)编写expand(s1,s2),将字符串s1中类似于a-z类的速记符号在字符串s2中扩展为等价的完整列

编写expand(s1,s2)
编写expand(s1,s2),将字符串s1中类似于a-z类的速记符号在字符串s2中扩展为等价的完整列表abc.....xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c,a-z0-9和-a-z等类似的情况。作为前导和尾随的-字符原样排印。

#include <stdio.h>
#include <string.h>
char *expand(char s1[], char s2[]);
int main()
{
    char str1[80];
    char str2[80];
    gets(str1);
    printf("%s\n", str1);
    printf("%s\n", expand(str1, str2));
    return 0;
}
char *expand(char s1[], char s2[])
{
    int i, j, c1, c2;
    i = 0;
    j = 0;
    if(s1[i] != '-')
        c1 = s1[i];
    else
    {
        s2[j++] = s1[i]; // 如果第一字符是‘-’,赋值给s2[j]
        ++i;
        c1 = s1[i];
    }
    while(s1[i++] != '\0')
    {
        if(i == 25 || i == 9) //考虑 这种情况 a-z0-9
        {
            while(c1 <= 'z') // 将a—z 存放到 s2[j]中 同时将 c1 赋值 0
            {
                s2[j++] = c1;
                ++c1;
            }
            ++i;
            c1 = s1[i];
        }
    }
    --i;
    c2 = s1[i];

    while(c1 <= c2)
    {
        s2[j++] = c1;
        ++c1;
    }
    s2[j] = '\0';
    return s2;
}

代码写的很烂   有个问题  如果是a-z0-9这种情况  没有输出  我那个if判断语句if(i == 25 || i == 9)是不是有问题 有什么好的处理方法?
[解决办法]
a-b-c怎么处理?

热点排行