一道C数据结构试题

6.编写一个C程序,首先提示用户从键盘输入三个字符串,记输入后的字符串分别为source_str、str1、str2。其中,st... 6.编写一个C程序,首先提示用户从键盘输入三个字符串,记输入后的字符串分别为source_str、str1、str2。其中,str1是source_str的一部分。程序首先将source_str中的str1的部分删除,然后再将str2添加到被删除的位置当中。程序打印出最终所得到的字符串。例如,如果用户从键盘输入123456789 2345 45670,则程序应该输出1456706789。 展开
 我来答
xndcn
2008-01-14 · TA获得超过826个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:432万
展开全部
收下先

/*匆匆写就,说得不是很详细
另外,只能替换第一次出现的str1,应该还可以再改进,楼主自己看看吧,不明白可以发消息给我*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int change(char *source_str,char *str1,char *str2);
int find(char *source_str,char *str1);

char s1[20],s2[20],s3[20];

printf("Enter the source_str:");
gets(s1);
printf("Enter the str1:");
gets(s2);
printf("Enter the str12:");
gets(s3);

if(change(s1,s2,s3)!=0)
printf("%s",s1);
else
printf("Wrong!");
return 0;
}

int change(char *source_str,char *str1,char *str2)/*将str2替换str1*/
{
int n=find(source_str,str1);
int i,j;
if(n!=-1)
{
if(strlen(str1)>strlen(str2))
{
for(i=n+strlen(str2);i<=strlen(source_str)-strlen(str1)+strlen(str2);i++)
{
source_str[i]=source_str[i+strlen(str1)-strlen(str2)];
}

}
else
{
for(i=strlen(source_str)+strlen(str2)-strlen(str1);i>=n+strlen(str2);i--)
{
source_str[i]=source_str[i+strlen(str1)-strlen(str2)];
}
}
for(i=n;i<=strlen(str2);i++)
{
source_str[i]=str2[i-n];
}
return 1;
}
else
return 0;
}

int find(char *source_str,char *str1)/*查找str1在source_str中第一次出现的位置,找不到就返回-1*/
{
int i=0,j=0;
int temp;
while(source_str[i]!='\0')
{
j=0;
temp=i;
while(source_str[temp]!='\0'&&str1[j]!='\0'&&source_str[temp]==str1[j])
{
temp++;
j++;
}
if(j==strlen(str1))
return i;
i++;
}
return -1;
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式