#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
char out[100][300];
int lon[100];
int r=0,k=0;
while(~scanf("%s",str)){
for(int i=0,len=strlen(str);i<len;i++)//拆分
{
if(str[i]>='1'&&str[i]<='9'){
if(str[i+1]<'1'||str[i+1]>'9'){//一位数字
memcpy(out[k++],&str[r],i-r+1);
r=i+1;
i=r;
}
else //两位数字
{
memcpy(out[k++],&str[r],i+1-r+1);
r=i+2;
i=r;
}
}
}
int len2;
char tm[50];
for(int i=0;i<k;i++){//lon录值
len2=strlen(out[i]);
for(int j=0;j<len2;j++){
if(out[i][j]>='1'&& out[i][j]<='9'){
if(len2-j==1)//一位数字
{
lon[i]=(int)out[i][j]-48;
out[i][j]='\0';
}
else
if(len2-j==2)
{
lon[i]=((int)out[i][j]-48)*10+(int)out[i][j+1]-48;
out[i][j+1]='\0';
out[i][j]='\0';
break;
}
}
}
}
int q;
char tmp[50];
for(int i=0;i<k;i++)
for(int h=0;h<k-1;h++){
if(lon[h]>lon[h+1]){
q=lon[h];
lon[h]=lon[h+1];
lon[h+1]=q;
memcpy(tmp,out[h],strlen(out[h]));
memset(out[h],0,strlen(out[h]));
memcpy(out[h],out[h+1],strlen(out[h+1]));
memset(out[h+1],0,strlen(out[h+1]));
memcpy(out[h+1],tmp,strlen(tmp));
memset(tmp,0,strlen(tmp));
}
}
for(int i=0;i<k;i++){
for(int g=0;g<lon[i];g++)
printf("%s",out[i]);
}
}
return 0;
}
我的第三题代码,自测通过,没时间做。。。。忧伤