求助!提示“运行错误0” 《算法笔记》3.6小节——入门模拟->字符串处理 问题 D: 单词替换

题目描述

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入

多组数据。每组数据输入包括3行,
第1行是包含多个单词的字符串 s,
第2行是待替换的单词a,(长度<=100)
第3行是a将被替换的单词b。(长度<=100)
s, a, b 最前面和最后面都没有空格。

输出

每个测试数据输出只有 1 行,
将s中所有单词a替换成b之后的字符串。

样例输入 Copy

I love Tian Qin
I
You

样例输出 Copy

You love Tian Qin

代码

代码1:
在codeup上提示“运行错误0”!
但我不知道错在哪里?好痛苦,求高人指点!

#include<stdio.h>   //提示“运行错误0”               
#include<string.h>  

int main(){
	char s[200],a[110],b[110];
	while(gets(s)&&gets(a)&&gets(b))
	{
		int alen=strlen(a);  
		int blen=strlen(b);
		int slen=strlen(s);
		int i,j,u,k;
		for(i=0;i<slen;i++){
			if(s[i]==a[0]){
				
				u=i+1;
				for(j=1;j<alen;j++){
					if(s[u]!=a[j]) break;
					else u++;
				}
				
				
				if(j==alen&&(s[i+alen]=='\0'||s[i+alen]==' '||s[i+alen]==','||s[i+alen]=='.'))
				{
					
					for(k=i+alen;k<slen;k++){
						s[k-alen]=s[k];
					}
					slen=slen-alen;
					s[slen]='\0'; 
					
					
					for(k=slen-1;k>=i;k--){
						s[k+blen]=s[k];
					}
					slen=slen+blen;
					s[slen]='\0';
				
					for(k=0;k<blen;k++){
						s[k+i]=b[k];
						
					}
				}
			}
		}
				
		printf("%s\n",s);
	}
	return 0;
} 



代码2:此代码在codeup上是可以通过的。

#include <stdio.h>
#include <string.h>
 
int main()
{
	char s[200],a[110],b[110];
	while(gets(s)&&gets(a)&&gets(b)){
		char s1[200];
		int i=0,j=0,len=0;
		while(s[i]!='\0'){
			s1[len++]=s[i];
			if(s[i]==a[j]){
				j++;
			}
			else{
				j=0;
			}
			if(j==strlen(a)&&(s[i+1]==' '||s[i+1]==','||s[i+1]=='.'||s[i+1]=='\0')){
				len=len-strlen(a);
				int k=0;
				while(b[k]!='\0'){
					s1[len++]=b[k];
					k++;
				}
			}
			
			i++;
		}
		s1[len]='\0';
		printf("%s\n",s1);
	}	
	return 0;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值