请写一个函数,实现按规则将两个字符串组和成一个字符串。
输入:
共2行,每行一个字符串,其中第一个字符串只包含大写字母,第二个字符串只包含数字且长度不超过15。测试用例保证组合后的字符串长度不超过127。
输出:
只有一行,为组合后的字符串。
函数接口定义:
void recombination( char str1[], char str2[] ) ;
其中 str1
和 str2
都是用户传入的参数,为保存两个字符串的数组,且str2
中仅包含数字。函数没有返回值。该函数的功能是将 str1
和 str2
组合成一个字符串并将组合后的字符串保存在 str1
中。组合的规则为依次取str2
中的字符插入到str1
中。所有的字符插入的规则都是根据其数字和位置来决定。其中 str2
中第一个字符插入的位置就是该数字所代表的位置,比如如果是0,就插在 str1
的最前边,如果是1,就插在str1
中第一个字符的后边,依此类推。str2
中其他字符插入的规则类似,只是每次都是从前边刚刚插入的位置开始数,比如刚插入的位置为10,当前待插入字符为0时则插在11,为1时则插在12,依此类推。测试用例保证插入过程中不会出现str1
中最后一个字符的位置与待插入字符应该插入的位置之间有空位置的情况。
裁判测试程序样例:
#include<stdio.h>
#define LENA 128
#define LENB 16
void recombination( char str1[] , char str2[] ) ;
int main()
{
char str1[LENA] , str2[LENB] ;
scanf( "%s%s" , str1 , str2 ) ;
recombination( str1 , str2 ) ;
printf( "%s\n" , str1 ) ;
return 0;
}
/* 请在这里填写答案 */
输入样例:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
012345
输出样例:
0A1BC2DEF3GHIJ4KLMNO5PQRSTUVWXYZ
程序实现:
void recombination(char str1[],char str2[]){
int pos=0;int len=0;
int prepos=0;
for(int i=0;str1[i]!='\0';i++)len++;
for(int i=0;str2[i]!='\0';i++){
if(i!=0)pos=prepos+(int)str2[i]-48;
else pos=(int)str2[0]-48;
int truepos=pos+i;
for(int j=len-1;j>=truepos;j--)str1[j+1]=str1[j];
str1[truepos]=str2[i];
len++;
prepos=pos;
}
str1[len]='\0';
}