临安自驾游攻略:扩展字符 C语言 求代码和算法!

来源:百度文库 编辑:高考问答 时间:2024/05/01 17:34:41
【问题描述】
编写一函数expand(s1,s2),用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符,例如将a-d扩展为abcd。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。在main函数中测试该函数:从键盘输入包含缩记符号的字符串,然后调用该函数进行扩展,输出扩展结果。

【输入形式】
从键盘输入包含扩展符的字符串
【输出形式】
输出扩展后的字符串
【输入样例】
a-c-u-B
【输出样例】
abcdefghijklmnopqrstu-B
【样例说明】
扩展输入a-c-u为:abcdefghijklmnopqrstu,而B比u值小,所以无法扩展,直接输出。

请各位高手用标准的C编写.谢谢!

#include "stdio.h"
#include "string.h"
int str(char s1,char s2)
{
return s1>='0'&&s1<='9'&&s2>='0'&&s2<='9'||s1>='a'&&s1<='z'&&s2>='a'&&s2<='z'
||s1>='A'&&s1<='Z'&&s2>='A'&&s2<='Z';
}
void expand(char *s1,char *s2)
{
int i,j,h,t=0,v;
for(i=0;i<strlen(s1);i++)
{

if(s1[i]=='-')
{
for(j=i;j<strlen(s1);j++)
{
if(s1[j]!='-')
{
break;
}
}
if(i!=1) t--;
s2[t]=s1[i-1];
t++;
if(s1[j]>s1[i-1]&&str(s1[j],s1[i-1]))
{
h=s1[j]-s1[i-1];
for(v=t;v<t+h;v++)
{
s2[v]=s2[v-1]+1;
}
s2[v]='\0';
t+=h;
}
i=j;
}
}

}
void main()
{
char s1[100],s2[100];
gets(s1);
expand(s1,s2);
puts(s2);
}
还没全好自己调试下吧!我们下课了没时间了
#include "stdio.h"
#include "string.h"
int str(char s1,char s2)
{
return s1>='0'&&s1<='9'&&s2>='0'&&s2<='9'||s1>='a'&&s1<='z'&&s2>='a'&&s2<='z'
||s1>='A'&&s1<='Z'&&s2>='A'&&s2<='Z';
}
void expand(char *s1,char *s2)
{
int i,j,h,t=0,v;
for(i=0;i<strlen(s1);i++)
{

if(s1[i]=='-')
{
for(j=i;j<strlen(s1);j++)
{
if(s1[j]!='-')
{
break;
}
}
if(i!=1) t--;
s2[t]=s1[i-1];
t++;
if(s1[j]>s1[i-1]&&str(s1[j],s1[i-1]))
{
h=s1[j]-s1[i-1];
for(v=t;v<t+h;v++)
{
s2[v]=s2[v-1]+1;
}
s2[v]='\0';
t+=h;
}
i=j;
}
}

}
void main()
{
char s1[100],s2[100];
gets(s1);
expand(s1,s2);
puts(s2);
}
还没全好自己调试下吧!我们下课了没时间了
#include "stdio.h"
#include "string.h"
int str(char s1,char s2)
{
return s1>='0'&&s1<='9'&&s2>='0'&&s2<='9'||s1>='a'&&s1<='z'&&s2>='a'&&s2<='z'
||s1>='A'&&s1<='Z'&&s2>='A'&&s2<='Z';
}
void expand(char *s1,char *s2)
{
int i,j,h,t=0,v;
for(i=0;i<strlen(s1);i++)
{

if(s1[i]=='-')
{
for(j=i;j<strlen(s1);j++)
{
if(s1[j]!='-')
{
break;
}
}
if(i!=1) t--;
s2[t]=s1[i-1];
t++;
if(s1[j]>s1[i-1]&&str(s1[j],s1[i-1]))
{
h=s1[j]-s1[i-1];
for(v=t;v<t+h;v++)
{
s2[v]=s2[v-1]+1;
}
s2[v]='\0';
t+=h;
}
i=j;
}
}

}
void main()
{
char s1[100],s2[100];
gets(s1);
expand(s1,s2);
puts(s2);
}
还没全好自己调试下吧!我们下课了没时间了
#include "stdio.h"
#include "string.h"
int str(char s1,char s2)
{
return s1>='0'&&s1<='9'&&s2>='0'&&s2<='9'||s1>='a'&&s1<='z'&&s2>='a'&&s2<='z'
||s1>='A'&&s1<='Z'&&s2>='A'&&s2<='Z';
}
void expand(char *s1,char *s2)
{
int i,j,h,t=0,v;
for(i=0;i<strlen(s1);i++)
{

if(s1[i]=='-')
{
for(j=i;j<strlen(s1);j++)
{
if(s1[j]!='-')
{
break;
}
}
if(i!=1) t--;
s2[t]=s1[i-1];
t++;
if(s1[j]>s1[i-1]&&str(s1[j],s1[i-1]))
{
h=s1[j]-s1[i-1];
for(v=t;v<t+h;v++)
{
s2[v]=s2[v-1]+1;
}
s2[v]='\0';
t+=h;
}
i=j;
}
}

}
void main()
{
char s1[100],s2[100];
gets(s1);
expand(s1,s2);
puts(s2);
}
还没全好自己调试下吧!我们下课了没时间了

#include "stdio.h"
#include "string.h"
int str(char s1,char s2)
{
return s1>='0'&&s1<='9'&&s2>='0'&&s2<='9'||s1>='a'&&s1<='z'&&s2>='a'&&s2<='z'
||s1>='A'&&s1<='Z'&&s2>='A'&&s2<='Z';
}
void expand(char *s1,char *s2)
{
int i,j,h,t=0,v;
for(i=0;i<strlen(s1);i++)
{

if(s1[i]=='-')
{
for(j=i;j<strlen(s1);j++)
{
if(s1[j]!='-')
{
break;
}
}
if(i!=1) t--;
s2[t]=s1[i-1];
t++;
if(s1[j]>s1[i-1]&&str(s1[j],s1[i-1]))
{
h=s1[j]-s1[i-1];
for(v=t;v<t+h;v++)
{
s2[v]=s2[v-1]+1;
}
s2[v]='\0';
t+=h;
}
i=j;
}
}

}
void main()
{
char s1[100],s2[100];
gets(s1);
expand(s1,s2);
puts(s2);
}
还没全好自己调试下吧!我们下课了没时间了