3-3 编写函数 expand(s1, s2),将字符串 s1 中类似于 a-z 一类的速记符号 在字符串 s2 中扩展为等价的完整列表 abc…xyz。该函数可以处理大小写字母和数字,并可 以处理 a-b-c、a-z0-9 与-a-z 等类似的情况
Archlinux
GCC 13.1.1 20230429
2023-08-01 17:03:12 星期二
点击查看代码
#include<stdio.h>
void expand( const char *s1, char *s2 )
{
int i, j, k;
i = j = k = 0;
while( s1[i] != '\0' )
{
if( s1[i]=='-' && i>0 && s1[i+1]!='\0' )
{
if( s1[i-1] < s1[i+1] )
{
for( k=s1[i-1]+1; k<=s1[i+1]; k++ )
{
s2[j++] = k;
}
}
else
{
for( k=s1[i-1]-1; k>=s1[i+1]; k-- )
{
s2[j++] = k;
}
}
i++;
}
else
{
s2[j++] = s1[i];
}
i++;
}
s2[j]='\0';
}
int main()
{
const char s1[] = "a-z";
char s2[100];
expand( s1, s2 );
printf("%s\n", s2);
return 0;
}
运行截图:
输出正确。
小白刚学习C语言,代码质量不高,欢迎评论。