练习3-3 编写函数 expand(s1, s2),将字符串s1 中类似于a-z 一类的速记符号在字符串s2中扩展为等价的完整列表abc…xyz。该函数可以处理大小写字母和数字。

来源:互联网 发布:淘宝购物车营销价格 编辑:程序博客网 时间:2024/06/13 04:46
#include<stdio.h>void expand(char s1[],char s2[]);int main(){    char s1[20]="-a-f0-9S-X--";    char s2[100]="";    expand(s1,s2);    for(int i=0;s2[i]!='\0';++i){        printf("%c",s2[i]);    }    return 0;}void expand(char s1[],char s2[]){    int i;    int j=0;    for(i=0;s1[i]!='\0';++i){        if(s1[i]=='-'){            if(i==0){                s2[j++]='-';            }else if(s1[i-1]>='a'&&s1[i-1]<='z'&&s1[i+1]>='a'&&s1[i+1]<='z'){                for(char k=s1[i-1]+1;k<s1[i+1];++k){                    s2[j++]=k;                }            }else if(s1[i-1]>='A'&&s1[i-1]<='Z'&&s1[i+1]>='A'&&s1[i+1]<='Z'){                for(char k=s1[i-1]+1;k<s1[i+1];++k){                    s2[j++]=k;                }            }else if(s1[i-1]>='0'&&s1[i-1]<='9'&&s1[i+1]>='0'&&s1[i+1]<='9'){                for(char k=s1[i-1]+1;k<s1[i+1];++k){                    s2[j++]=k;                }            }else{                s2[j++]='-';            }        }else{            s2[j++]=s1[i];        }    }    s2[j]='\0';}

执行结果如下图所示:

这里写图片描述

阅读全文
0 0
原创粉丝点击