首页 > 其他 > 详细

编写函数 expand(s1, s2),将字符串 s1 中类似千 a?z 一类的速记符号 在字符串 s2 中扩展为等价的完整列表 abc…xyz。该函数可以处理大小写字母和数字,并可 以处理 a?b?c、a?z0?9 与?a?z

时间:2020-02-08 18:43:34      阅读:411      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
#include<ctype.h>
void expend(char *,char *); 
int main()
{
        char a[]="-a-d-z00-9--------A-Z";
        char b[200];
        expend(a,b);
        printf("%s",b);

        return 0;
}
void expend(char a[] ,char b[]){
        int i,j=0;
        for(i=0;a[i]!='\0';i++) 
        {   
                if(a[i]=='-'&&i!=0) //这里判断是不是第一个如果是第一个的话前面就没有啥东西了 直接复制就ok了
                {   

                        if(isdigit(a[i-1])&&isdigit(a[i+1]))   //这里判断是不是数字
                        {   
                                for(int c=a[i-1]+1;c<a[i+1];b[j++]=c++); //这里就是赋值了
                                continue;
                        }else if(islower(a[i-1])&&islower(a[i+1])){    //这里判断是不是小写字母
                                for(int c=a[i-1]+1;c<a[i+1];b[j++]=c++);
                                continue;
                        }else if(isupper(a[i-1])&&isupper(a[i+1])){
                                     /*
                                    这里判断是不是大写字母  当然如果你要写成 (a[i-1]>='A'&&a[i-1]<='Z')&& (a[i+1]>='A'&&a[i+1]<='Z')
                                    也是可以的你还可以把这个三个判断写成一个判断 
                                    我感觉那样子阅读性太差了                                 
                                       */                              
                                for(int c=a[i-1]+1;c<a[i+1];b[j++]=c++);
                                continue;
                        }

                }
        b[j++]=a[i];
        }

        b[j]='\0';

}

编写函数 expand(s1, s2),将字符串 s1 中类似千 a?z 一类的速记符号 在字符串 s2 中扩展为等价的完整列表 abc…xyz。该函数可以处理大小写字母和数字,并可 以处理 a?b?c、a?z0?9 与?a?z

原文:https://www.cnblogs.com/my-study/p/12284105.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!