“第六十六天”

这个我记得是有更优解的,不过还是明天发吧,明天想一想,看看能不能想起来

#include<string.h>
int main()
{
	char a[201] = { 0 };
	char b[201] = { 0 };
	scanf("%s %s", a, b);
	int na = strlen(a);
	int nb = strlen(b);
	int i = 0, j = 0;
	if (na >= nb)
	{
		for(i=0;i<na;i++)
		{
			int flag = 1;
			for (j = 0; j < nb; j++)
			{
				if (a[i+j] != b[j])
				{
					flag = 0; break; 
				}

			}
			if (flag)
			{
				printf("%s is substring of %s\n", b, a);
				return 0;
			}
		}
	}
	else
	{
		for (i = 0; i < nb; i++)
		{
			int flag = 1;
			for (j = 0; j < na; j++)
			{
				if (b[i + j] != a[j])
				{
					flag = 0; break;
				}

			}
			if (flag)
			{
				printf("%s is substring of %s\n", a, b);
				return 0;
			}
		}
	}
	printf("No substring\n");
	return 0;
}

这串代码我自己测是没问题的,可是检测过不去。

#include<string.h>
#include<ctype.h>
int main()
{
	char ch[101] = { 0 };
	gets(ch);
	char x[100] = { 0 };
	gets(x);
	char y[100] = { 0 };
	gets(y);

	int nx = strlen(x);
	int ny = strlen(y);
	int n = strlen(ch);
	ch[n] = 32;
	int i = 0, j = 0, m = 0;
	char a[100][100] = { 0 };

	//分单词
	for (i = 0; i < n; i++)
	{
		int nm = 0;
		while (!isspace(ch[i]))
		{
			a[m][nm++] = ch[i++];
		}
		m++;
	}
	//查看是否一样,且替换
	for (i = 0; i < m; i++)
	{
		//查看是否为待替换单词
		for (j = 0; j < nx; j++)
		{
			if (a[i][j] != x[j])
				break;
		}
		//如果是,替换
		if (j == nx)
		{
			for (j = 0; j < ny; j++)
			{
				a[i][j] = y[j];
			}
			a[i][j] = 0;
			//这个在替换后单词后面那个元素赋值0,防止原单词长,到时候打印出没有替换的那一部分
		}

		printf("%s ", &a[i][0]);
		
	}

	
}

找到了

,不过不具体说了,可以自己对比一下

#include<string.h>
#include<ctype.h>
int main()
{
	char ch[102] = { 0 };
	gets(ch);
	char x[100] = { 0 };
	
	char y[100] = { 0 };
	scanf("%s %s",x, y);

	int nx = strlen(x);
	int ny = strlen(y);
	int n = strlen(ch);
	ch[n] = 32;
	int i = 0, j = 0, m = 0;
	char a[101][101] = { 0 };

	//分单词
	for (i = 0; i < n; i++)
	{
		j = 0;
		while (!isspace(ch[i]))
		{
			a[m][j++] = ch[i++];
		}
		m++;
	}

	//查看是否一样,且替换
	for (i = 0; i < m; i++)
	{
		//查看是否为待替换单词
		for (j = 0; j < nx; j++)
		{
			//这里要是,nx==1,且a和x的第一个一样,后面x没有了,但下面替换条件还是满足的
			if (a[i][j] != x[j])
				break;
		}

		//如果是,替换
		if (a[i][j]==0&&j==nx)//所以这里加了个看看a[i][j]有没有到最后
		{
			for (j = 0; j < ny; j++)
			{
				a[i][j] = y[j];
			}
			 
			a[i][j] = 0;
			//这个在替换后单词后面那个元素赋值0,防止原单词长,到时候打印出没有替换的那一部分
		}

		printf("%s ", &a[i][0]);
		
	}

	
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值