用c语言试设计一个程序:如果字符串的一个子串(长度大 1)的各个字符均相同,则称之为等值子串输入字符串 S,以‘!’为结束标志,如果串 S 中不存在等值子串,则输出信息:” 无等值子串”,否则求出(输出)一个长度最大的等值子串。
时间: 2024-01-21 21:16:40 浏览: 55
以下是一个用 C 语言实现的程序,可以实现你所描述的功能:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char s[MAX_LEN];
int len, i, j, k;
int max_len = 0, max_i = -1;
printf("请输入字符串: ");
scanf("%s", s);
len = strlen(s);
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
int flag = 1;
for (k = i + 1; k <= j; k++) {
if (s[k] != s[i]) {
flag = 0;
break;
}
}
if (flag && j - i + 1 > max_len) {
max_len = j - i + 1;
max_i = i;
}
}
}
if (max_i == -1) {
printf("无等值子串\n");
} else {
printf("最长等值子串为: ");
for (i = max_i; i < max_i + max_len; i++) {
printf("%c", s[i]);
}
printf("\n");
}
return 0;
}
```
程序首先读取用户输入的字符串,然后依次枚举所有子串,并判断其中每个字符是否相同。如果是,则记录该子串的长度和起始位置。最后判断是否存在等值子串,如果不存在,则输出相应信息。如果存在,则输出长度最大的等值子串。
阅读全文