盐荒子孙2

题目描述

没有盐,做饭只能用酱油。

将所有的salt替换为soy sauce,不管大小写。

输入格式

包含salt的英文语料(每行字符小于1000)

注意:测试输入数据中可能存在字符个数为0的空行(本题推荐采用gets进行数据读入,采用scanf则无法跳过空行)。

输出格式

用soy sauce替换salt后的输出

样例输入

Salt is necessary
Water is not sAlt as salT
as you can make it soy-bean
sauce can be saLt 
soy-bean sauce only
bean soy-bean sauce 

输出

soy sauce is necessary
Water is not soy sauce as soy sauce
as you can make it soy-bean
sauce can be soy sauce 
soy-bean sauce only
bean soy-bean sauce 

思路一:

#include<stdio.h>
#include<string.h>
int main()
{
	char ch[1000] = { 0 }, b[] = "soy sauce ";
	while (gets(ch))
	{
		int a[1500] = { 0 };
		int n = 0;
		int len = strlen(ch);
		for (int i = 3; i < len; i++)
		{
			if ((ch[i - 3] == 's' || ch[i - 3] == 'S') && (ch[i - 2] == 'a' || ch[i - 2] == 'A') && (ch[i - 1] == 'l' || ch[i - 1] == 'L') && (ch[i] == 't' || ch[i] == 'T'))
			{
				for (int k = 0; k < i - 3; k++)
				{
					a[k] = ch[k];
				}
				puts(a);
				//待补充
			}
		}
	}
	return 0;
}
始终错误:
思路:将salt前的字符存入一个数组,将该数组与soy sauce连接,将salt后的字符
再存入该数组,最终输出一个字符
1.salt前字符存入失败,只能存入一个字符
2.连接受影响
3.存入后面字符再输出为乱码

正确答案:

#include<stdio.h>
#include<string.h>
int main() 
{
	char s[1000];
	int i;
	while (gets(s)) 
	{
		for (i = 0; i < strlen(s); i++) {
			if ((s[i] == 's' || s[i] == 'S') && (s[i + 1] == 'a' || s[i + 1] == 'A') && (s[i + 2] == 'l' || s[i + 2] == 'L') && (s[i + 3] == 't' || s[i + 3] == 'T'))
			{
				printf("soy sauce");
				i += 3;		//往后越过三个字符
			}
			else {
				printf("%c", s[i]);
			}
		}
		printf("\n");
	}
}
总结:循环加选择,输出单个字符,最终结果为整个字符串,就像分而治之
一个一个考虑,最终就能解决所有问题。
Ps:一口气成不了胖子,总要慢慢来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北国137

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值