c语言编写程序输入两行字符串s和t(s和t最长含50个字符,可以含有空格),将s串中首次与t匹配的子串逆置,并将结果输出。 【输入文件】输入文件为invertsub.in,含有两行字符串s和t,分别以#作为串结束符。 【输出文件】输出文件invertsub.out只有一行,包含一个串,是要求的输出结果。在行末也要有一个回车符。 【输入样例】helloworld# llowor# 【输出样例】herowollld 【样例说明】helloworld和llowor中重复的子串为llowor,逆置后结果为herowollld
时间: 2024-02-13 18:05:00 浏览: 96
好的,你的问题是关于编写程序输入两行字符串s和t,将s串中首次与t匹配的子串逆置,并将结果输出。这个问题可以通过以下C语言代码实现:
```c
#include<stdio.h>
#include<string.h>
int main()
{
char s[51], t[51];
scanf("%[^#]#%[^#]#", s, t);
int slen = strlen(s), tlen = strlen(t);
int flag = 0;
for(int i = 0; i < slen - tlen + 1; i++)
{
if(strncmp(s+i, t, tlen) == 0)
{
flag = 1;
char tmp[51];
strncpy(tmp, s, i);
tmp[i] = '\0';
strcat(tmp, t);
char* sub = s + i + tlen;
int sublen = strlen(sub);
for(int j = sublen - 1; j >= 0; j--)
tmp[strlen(tmp)] = sub[j];
printf("%s\n", tmp);
break;
}
}
if(flag == 0)
printf("%s\n", s);
return 0;
}
```
这个程序首先从输入文件中读取两行字符串s和t,然后遍历字符串s中所有可能的子串,找到第一个与t匹配的子串,并将其逆置,最后输出结果。如果没有子串与t匹配,则直接输出s字符串。
阅读全文