用c语言编写一个程序【问题描述】输入两行字符串s和t(s和t最长含50个字符,可以含有空格),将s串中首次与t匹配的子串逆置,并将结果输出。 【输入文件】输入文件为invertsub.in,含有两行字符串s和t,分别以#作为串结束符。 【输出文件】输出文件invertsub.out只有一行,包含一个串,是要求的输出结果。在行末也要有一个回车符。 【输入样例】helloworld# llowor# 【输出样例】herowollld
时间: 2024-02-22 13:59:41 浏览: 57
c语言编写程序实现两个超长正整数(每个最长80位数字)的减法运算
好的,以下是一个用C语言编写的程序,可以实现你的要求:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 50
void reverse(char* s, int start, int end) {
while (start < end) {
char temp = s[start];
s[start++] = s[end];
s[end--] = temp;
}
}
int main() {
char s[MAX_LEN + 1], t[MAX_LEN + 1];
int s_len, t_len, i, j;
// 从输入文件读取s和t
scanf("%[^#]#", s);
scanf("%s#", t);
s_len = strlen(s);
t_len = strlen(t);
// 查找s中与t匹配的子串
for (i = 0; i < s_len - t_len + 1; i++) {
for (j = 0; j < t_len; j++) {
if (s[i + j] != t[j]) {
break;
}
}
if (j == t_len) {
// 找到匹配的子串,将其逆置
reverse(s, i, i + t_len - 1);
break;
}
}
// 将结果输出到输出文件
printf("%s\n", s);
return 0;
}
```
这个程序首先从输入文件中读取字符串s和t,然后查找s中与t匹配的子串,并将其逆置。最后,将结果输出到输出文件。注意,为了保证字符串s能够逆置,我们定义了一个名为reverse的函数,用于将字符串中指定范围内的字符逆置。
阅读全文