编写算法,将字符串t插入到字符串s中第i个字符位置

作者&投稿:隆李 (若有异议请与网页底部的电邮联系)
求解。。 编写一个算法,将字符串S1中的前i个字符复制到字符串S2中。字符串采用动态顺序存储结构~

String s1 = "aaaaaaaaaaaa";
StringBuffer s2 = "";
//截取s1前i个字符
s2.spand(s1.subString(0,i-1));
这样就把 s1的前i个字符加到s2上面去了

#include
void f(char *s,char *ss,int n) { int i,k,m; char *p,*q,*r;
k=0; r=ss; while ( *r ) { r++; k++; } //找到ss的末尾0,计算ss长度
m=0; q=s; while ( *q ) { q++; m++; } //找到s的末尾0
p=q; q+=k; *q=0; q--; //计算新字符串结尾位置
for ( i=0;i<m-n;i++,p--,q-- ) *q=*p; //将s最后k个字符后移k位
for ( i=0,r--;i<k;i++,q--,r-- ) *q=*r; //将ss倒序复制到s中空出来位置
}
void main() { char s[256],ss[256]; int n;
scanf("%s%s%d",s,ss,&n); f(s,ss,n); printf("%s
",s);
}

#include<stdio.h>
#include<string.h>
#include<memory.h>
void copys2s(char * src,char * dest,int loca)
{
char temp[100];

memset(temp,0,100);//初始化temp为0
strcpy(temp,src+loca-1); //把loca后面的字符串暂存起来

strcpy(src+loca-1,dest);//拷贝dest到src的从loca开始的位置

strcat(src,temp);//还原src从loca位置开始的字符串
}

void main()
{
char src[100];
char dest[100];

int loca=0;
printf("Please input src:");
gets(src);

printf("Please input dest:");
gets(dest);

printf("Please input the location:");
scanf("%d",&loca);

copys2s(src,dest,loca);

printf("New src is:%s\n",src);
return;
}
[MAX]中的MAX是宏定义,预编译的时候用100替换。

#include<stdio.h>
#define MAX 100
void insert(char a[MAX],char b[MAX],int i)
{
int alen=0,blen=0,k;
while(a[alen]!='\0')
{alen++;}/*获取数组a的长度*/
while(b[blen]!='\0')
{blen++;}/*获取数组b的长度*/

for(k=alen+blen-1;k>=blen+i-1;k--)
a[k]=a[k-blen];
for(k=i-1;k<i+blen-1;k++)
a[k]=b[k-i+1];
a[alen+blen]='\0';
}

void main()
{
int i,n;
char a[MAX],b[MAX];
printf("please input the 1st string:");
gets(a);
printf("please input the 2nd string:");
gets(b);
printf("please input the number:");
scanf("%d",&n);
insert(a,b,n);
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
}

k就是一个循环变量
alen
blen是两个数组的长度就是size
下面的void
main()就是要求的将字符b插入字符a的第i个字符位置的函数,加头文件
可以用strlen()直接求出两个字符串长度。。。
#include

#define
max
100
void
insert(char
a[max],char
b[max],int
i)
{
int
alen=0,blen=0,k;
while(a[alen]!='\0')
{alen++;}/*获取数组a的长度*/
while(b[blen]!='\0')
{blen++;}/*获取数组b的长度*/
for(k=alen+blen-1;k>=blen+i-1;k--)
a[k]=a[k-blen];
for(k=i-1;k

评论
0

0

0

加载更多


用c语言编写算法,将字符串t插入到字符串s中第i个字符位置
void insert(char a[MAX],char b[MAX],int i){ int alen=0,blen=0,k;while(a[alen]!='\\0'){alen++;}\/*获取数组a的长度*\/ while(b[blen]!='\\0'){blen++;}\/*获取数组b的长度*\/ for(k=alen+blen-1;k>=blen+i-1;k--)a[k]=a[k-blen];for(k=i-1;k...

LZW算法LZW算法
串表中的字符串具有前缀性,即ωK∈T=>ω∈T。LZW算法的流程包括初始化、读取输入字符并构建前缀串ω,然后根据输入字符读取和更新ω值。具体步骤如下:1. 初始化:将所有单字符串放入串表。2. 读取第一个输入字符,赋予前缀串ω。3. Step: 读取下一个输入字符K;- 若K不在串表中,输出当前ω...

LZW算法LZW算法
LZW压缩算法,一种基于转换串表(字典)T,将输入字符串映射成定长的码字的无损压缩算法。在12位4096种可能的代码中,256个代表单字符,其余用于存储组合字符串。串表中的字符串具有前缀性,即ωK∈T=>;ω∈T。算法流程包括初始化、读取输入字符并构建前缀串ω,随后根据输入字符读取和更新ω值。具体...

如何编写实现串的置换操作Replace(&S,T,V)的算法?
解:\\x0d\\x0aint Replace(Stringtype &S,Stringtype T,Stringtype V);\/\/将串S中所有子串T替换为\\x0d\\x0aV,并返回置换次数\\x0d\\x0a{\\x0d\\x0a\\x0d\\x0afor(n=0,i=1;i<=Strlen(S)-Strlen(T)+1;i++) \/\/注意i的取值范围\\x0d\\x0a\\x0d\\x0aif(!StrCompare(SubString(...

子字符串查找(4)——Rabin-Karp算法
我们可以在初始时求得字符串T[i...M-1-i]的hash值,即X i %P = hash(txt, 0, M-1)(其中P为大素数); 然后通过上述公式递推就可以得到字符串T[i+1...M-i]的hash值,即X i+1 % P。RK算法完整源码:Rabin-Karp算法,由于通过计算模式串和文本子串的散列值来做相等性比较,...

阿里面试算法题合集一
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰...

LZW算法的LZW算法
LZW算法基于转换串表(字典)T,将输入字符串映射成定长(通常为12位)的码字。在12位4096种可能的代码中,256个代表单字符,剩下3840给出现的字符串。LZW字典中的字符串具有前缀性,即 ωK∈T=>;ωT。LZW算法流程:步骤1: 开始时的词典包含所有可能的根(Root),而当前前缀P是空的;步骤2: ...

高分求用turbo c 简单编程
1.编程:一个文本串可用事先给定的字母映射表进行加密。例如,字母映射表为:a b c b e f g h i j k l m n o p q r s t u v w y z n g z q t c o b m u h e l k p d a w x f y l v r s j 则字符串“encrypt”被加密为“tkzwsdf”,试写一算法,将输入...

数据结构关于串的KMP算法的理解高手请进
KMP 算法是一种字符串的模式匹配算法,参看严蔚敏数据结构一书,里面讲的很清楚。基本的字符串匹配算法是将被匹配的字符串S和模式串T 逐个字符进行比较。例如:S中有10个字符,T中有5个字符。S串初始的匹配位置为3.则从S中的第3个字符与T中的第一个字符匹配,若相同则S的第4个字符与T中的第2个...

编写算法,利用栈将字符串逆置。
思路就是这样啊 栈的特点就是先进后出 所以完全可以用单向链表来模拟,只要是pop、push函数正确就可以 所以这个问题就可以简化为单向链表反转的问题了 两种方式 非递归 pQueue converse(pQueue t){ tp p1, p2, tmp;int flag = 0;p2 = t->next->next;p1 = t;while(1){ p1->next->next =...

象山县18232222951: 如何编程“把字符串t插入到字符串s中”,求完整程序,灰常感谢!!! -
裴厚朴红: // 1.链表的创建函数,需包含库/*struct 结构体名 *creat() { struct 结构体名*head, *p1, *p2; p1=p2=(struct 结构体名 *)malloc(len); scanf_s("%d%d",&p1->num,&p1->score); while(p1->num!=0) { n=n+1; if(n==1) head=p1; p2->next=p1; p2=p1; p1=(...

象山县18232222951: 用c语言编写算法,将字符串t插入到字符串s中第i个字符位置
裴厚朴红: 应该有一个函数insert(char, char,int i) 前面是目标 后面的是原

象山县18232222951: 编写函数void insert(char *s,int m,int *t),该函数的功能是将字符串t插入到字符串s中的第m个字符的位置 -
裴厚朴红: #include void insert(char s1[ ],char s2[ ],int pos) { if(pos<1) return ; int i,j; char str_h[50]; char str_t[50]; for(i=0;i

象山县18232222951: 编写算法,将字符串t插入到字符串s中第i个字符位置 -
裴厚朴红: k就是一个循环变量 alen blen是两个数组的长度就是size 下面的void main()就是要求的将字符b插入字符a的第i个字符位置的函数,加头文件 可以用strlen()直接求出两个字符串长度... #include#define max 100 void insert(char a[max],...

象山县18232222951: 编写程序char*strcat(char*s,char*t),将字符串t复制到字符串s的末端,并且返回字符串s的首地址. -
裴厚朴红: char*strcat(char*s,char*t) { char *address=s; while(*s) s++; while(*s++=*t) NULL; return address; }

象山县18232222951: 将字符串t连接到字符串s的尾部 -
裴厚朴红: void stract(char s[],char t[]) { int i,j; for(i=0;s[i]!='\0';i++) ; for(j=0;t[j]!='\0';j++)//这里已经加了 s[i++]=t[j];//这里就不用加了 s[i]=0;//结束符标记 }

象山县18232222951: (2)编写函数strcopy(s, t),将字符串 s 复制到字符串 t 中. -
裴厚朴红: void strcopy(char*s,char*t) { while(*s!=0&&*t!=0) { *t++=*s++; } } main() { char *s="abcdef"; char *t="dfgkjl"; strcopy(s,t); printf("%s",t); getch(); }

象山县18232222951: 用C语言编程:实现字符串复制,即将所指字符串复制到S所指的内存空间中,形成 一个新字符串S -
裴厚朴红: #include main(){ char str1[]="12345"; char str2[6]; strcpy(str2,str1); }

象山县18232222951: 编写函数,将指针t所指的字符串复制到指针s所指的存储空间 -
裴厚朴红: 我改了一下:正确的程序: void scopy(char *s,char *t) {int i;for(i=0;t[i];i++){s[i]=t[i];} s[i]='\0';//修改理由参见下面! }void main() {char a[20],t[]="ABCDEFGH";scopy(a,t);puts(a);printf("\n");}之所以要加一个\0字符,是因为你在实...

象山县18232222951: 编写函数,在字符串 s 中找出字符串 t,并用字符串 q 替代之. -
裴厚朴红: #include#include void replace (char *s, char *t, char *q) { int i,j,k; int lens=strlen(s); int lent=strlen(t); int lenq=strlen(q); for(i=0;i<=lens-lent;i++) { k=i; for(j=0;j { if(s[k]==t[j]) continue; else break; } if(j==lent) { int p,m,temp; p=i+lenq; m=lens-lent+lenq; for(j=...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网