题目内容 (请给出正确答案)
[主观题]

下列程序能将字符串s1中的所有与字符串str1相同的子串替换成字符串sb2,并将替换后的新串存于字符

数组s2中。 include<stdio. h> void replace(s1,s2,str1,str2) char *s1,*s2,*str1,*str2; { char *t0,*t1,*t2,*x,*y; x=s1;y=s2; while(【 】) { for(t0=s1,t1=str1; ((*t1!=\O&& 【 】;t0++,t1++); if(*t1!=\0) *s2++=【 】; else { for(t1=str2;*t1!=\0;) *s2++= 【 】; 【 】; } } *s2=\0; } main () { static char s1[]="abcdef ababcd abab.",s2125]; replace (s1, s2, "abc", "XYZ"); printf("%s\n",s2); }

提问人:网友kyhdmmyt2 发布时间:2022-01-06
参考答案
查看官方参考答案
如搜索结果不匹配,请 联系老师 获取答案
更多“下列程序能将字符串s1中的所有与字符串str1相同的子串替换…”相关的问题
第1题
●试题四

阅读下列程序说明和C程序,将应填入(n)处的字句写在答卷纸的对应栏内。

【程序说明】

该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。

【程序】

#include

void strmerge(char*a,char*b,char*c)//将字符串a,b合并到字符串c中

{

char t,*w;

w=c;

while((1) )

{

//找到字符串a,b当前字符中较小的字符

if(*a<*b)

{

t=*a;

(2) ;

}

else if(*a>*b)

{

t=*b;

(3) ;

}

else//字符串a,b当前字符相等

{

t=*a;

a++;

b++;

}

if((4) )//开始,可直接赋值

*w=t;

else if(t!=*w)

//如果a,b中较小的当前字符与c中当前字符不相等,才赋值 (5) ;

}

if(*a!=\′\0′)//如果字符串a还没有结束,则将a的剩余部分赋给c

while(*a!=′\0′)

if(*a!=*w)

{

*(w)=*a;

a++;

}

else

(6) ;

if(*6!=′\0′)//如果字符串b还没有结束,则将b的剩余部分赋给c

while(*b!=′\0′)

if(*b!=*w)

{

*(w)=*b;

b++;

}

else

b++;

(7) ;

}

void strsort(char*s)//将字符串S中的字符排序

{

int i,j,n;

char t,*w;

W=S;

for(n=0;*w!=′\0′;n++)//得到字符串长度n

w++;

for(i=0;i

for(j=i+1;j

if((8) )

{

t=s[i];s[i]=s[j]; (9) ;

}

}

void main()

{

char s1[100],s2[100],s3[100];printf("\nPlease,input the first string:");

scanf("%s",s1);

printf("\nPlease input the second string:");

scanf("%s",s2);

strsort(s1);//将字符串s1排序

strsort(s2);//将字符串s2排序

printf("%s\n",s1);

printf("%s\n",s2);

s3[0]=′\0′;//字符串s3的第一个字符先置′\0′结束标志

(10) //将s1和s2合并,按照字母顺序排列,

//且要删去相同字符,存入s3中

printf("%s",s3);

}

点击查看答案
第2题
阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。【说明】 本程序可以将字符串s1中出现的

阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。

【说明】

本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。

【代码】

include<stdio.h>

include<stdlib.h>

include<string.h>

char*replace(char *s1, char *s2,char *s3)

{ char *p, *q, *r, *s; int |2,|3, i=0;

|2=strlen(s2);

|3=strlen(s3);

p=s1;

while((p=strstr(p,s2))!=NULL)

{ i++; /* 统计s2串出现的次数*/

(1);

}

i=(2);

s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/

p=s1;

while(1)

{ q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/

if(q!=NULL)

{ i=q-p;

(3);

r+=i;

(4);

r+=|3;

p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,

为下一次循环做好准备*/

}

else /*q为空,表示剩余的s1串中已经没有s2*/

{ (5);

break; /*终止循环*/

}

}

return(s); /*返回指向所形成的新串的指针*/

}

void main()

{ char *a="sabcababde", *b="ab", *c="efg", *d;

d=replace(a, b, c); printf("result=%s\n", d); free(d);

}

点击查看答案
第3题
下列给定程序中,函数p roc的功能是:先将字符串s 中的字符按顺序存放到t中,然后把S中的字符按正序
连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include<stdlib.h> include<conio.h> include<stdio.h> include<string.h> void proc(char*s,char*t) { int i,s1; s1=strlen(s); for(i=0;i<s1;i++) //****found**** t[i]=s[s1]; for(i=0;i<s1;i++) t[s1+i]一s[i]; t[2*s1]=\O0; } void main { char s[100],t[100]; system("CLS"); print{("\nPlease enter string s:"); scanf("%s",s); proc(s,t); printf("The result is:%s\n",t); }

点击查看答案
第4题
vi命令g/s1/s//s2/g功能是可以用字符串s1替换所有出现的s2,不管在一行中s2出现多少次?
点击查看答案
第5题
将字符数组s1中的字符串拷贝到字符数组s2中,并输出s2,请完善程序。 #include <stdio.h> int

将字符数组s1中的字符串拷贝到字符数组s2中,并输出s2,请完善程序。 #include <stdio.h> int main() { char s1[80],s2[80],*p1,*p2; gets(s1); p1=s1; p2=s2; while(*p2++=*p1++); printf("s2=%s",________); return 0; }

点击查看答案
第6题
阅读以下程序说明和C程序,将应填入(n)处的子句,写在对应栏内。【程序说明】 函数int commstr(char *

阅读以下程序说明和C程序,将应填入(n)处的子句,写在对应栏内。

【程序说明】

函数int commstr(char * str1,char * str2,int * sublen)从两已知字符串str1和str2中,找出它们的所有最长的公共子串。如果最长公共子串不止1个,函数将把它们全部找出并输出。约定空串不作为公共子串。

函数将最长公共子串的长度送入由参数sublen所指的变量中,并返回字符串str1和str2的最长公共子串的个数。如果字符串str1和str2没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。

【程序】

int strlen(char * s)

{char *t=s;

while(* ++);

return t-s-1;

}

int commstr(char) *str1,char *str2,int *sublen

{ char*s1, *s2;

int count=0,len1 ,len2,k,j,i,p;

len1:=strlen(str1)

len2 = strlen(str2);

if(len1>len2)

{s1=str1 ;s2=str2;}

else {len2 = len1;s1 = str2;s2 = str1;}

for(j=len2;j>0;j--) /*从可能最长子串开始寻找*/

{for(k=0;(1)<:len2;k++) /*k为子串s2的开始位置*/

{for(i=0;s1[(2)]!='\0';i++;) /*i为子串s1的开始位置*/

{ /*s1的子串与s2的子串比较*/

for (p=0;p<j)&&(3);p++);

if ((4)) /*如果两子串相同*/

{for(p=0);p<j;p++} /*输出子串*/

printf ("%c",s2[k+p]);

printf ("\n");

count++;/*计数增1 */

}

}

}

if (count>0) break;

*sublen=(count>0)?(5):0;

return count;

}

点击查看答案
第7题
●试题五 阅读以下程序说明和C程序,将应填入(n)处的子句,写在答卷纸的对应栏内。 【程序说明】 函

●试题五

阅读以下程序说明和C程序,将应填入(n)处的子句,写在答卷纸的对应栏内。

【程序说明】

函数int commstr(char *str1,char *str2,int *sublen)从两已知字符串str1和str2中,找出它们的所有最长的公共子串。如果最长公共子串不止1个,函数将把它们全部找出并输出。约定空串不作为公共子串。

函数将最长公共子串的长度送入由参数sublen所指的变量中,并返回字符串str1和str2的最长公共子串的个数。如果字符串str1和str2没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。

【程序】

int strlen(char *s)

{char *t=s;

while(*++);

return t-s-1;

}

intcommstr(char)*str1,char *str2,int *sublen

{char*s1,*s2;

int count=0,len1,len2,k,j,i,p;

len1=strlen(str1);

len2=strlen(str2);

if(len1>len2)

{s1=str1;s2=str2;}

else{len2=len1;s1=str2;s2=str1;}

for(j=len2;j>0;j--)/*从可能最长子串开始寻找*

{for(k=0; (1) <=len2;k++)/*k为子串s2的开始位置*/

{for(i=0;s1[ (2) ]!='\0';i++;)/* i为子串s1的开始位置*/

{/* s1的子串与s2的子串比较*/

for(p=0;p<j)&& (3) ;p++);

if ((4) )/*如果两子串相同*/

{for(p=0);p<j;p++}/*输出子串*/

printf("%c",s2[k+p]);

printf("\n");

count++;/* 计数增1*/

}

}

}

if (count>0)break;

*sublen=(count>0)? (5) :0;

return count;

}

点击查看答案
第8题
下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中
的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2 所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include<stdlib.h> include<conio.h> include<stdio。h> include<string.h> void proc(char*strl,char*str2,char*str) { int i,j;char ch; i=0;j=strleu(str2)-1; //****found**** while(i>j) { ch=str2[i];str2[i]=str2[j];str2[j]=ch; i++;j--; } while(*str1||*str2) { if(*str1){*str=*str1;str++;str1++;) if(*str2){*str=*str2;str++;str2++;) } //****found**** *str=0: } void main { char s1[100],s2[100],t[200]; system("CLS"); printf("\nEnter s1 string:"); scanf("%s",sl); printf("\nEnter s2 string:"); scanf("%s",s2); proc(s1,s2,t); printf("\nThe result is:%s\n",t); }

点击查看答案
第9题
以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址 #include <std

以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址

#include <stdio.h>

#include <string.h>

char *scmp(char *s1, char *s2)

{ if(strcmp(s1,s2)<0)

return(s1);

else return(s2);

}

main()

{ int i; char string[20], str[3][20];

for(i=0;i<3;i++) gets(str[i]);

strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/

strcpy(string,scmp(string,str[2]));

printf("%s\n",string);

}

若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为

A.abcd

B.abba

C.abc

D.abca

点击查看答案
第10题
以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址#include<stdio.h

以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址 #include<stdio.h> #include<string.h> char *scmp(char *s1,char *s2) { if(strcmp(s1,s2)<0) return(s1); else return(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i++)gets(str[i]); strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为

A.abcd

B.adba

C.abc

D.abca

点击查看答案
账号:
你好,尊敬的用户
复制账号
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
简答题
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
简答题
点击打开微信