凡是包含有happy作为子串的字符串都被称为快乐的字符串(happy必须连续),给你若干个字符串,你能把所有快乐的字符串都找出来么第一行输入一个正整数n表示有n个字符串。 接下来输入n行,每行表示一个字符串。(n<=100,每个字符串不超过100)输出所有快乐的字符串,每行一个,按字典序排序。用主函数形式表达
时间: 2024-03-08 20:48:28 浏览: 124
在主函数中输入一含有大写字母的字符串,调用该函数并输出改变后的字符串。
以下是一个用C语言实现的程序,可以找出给定字符串中的所有快乐字符串,并按字典序排序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 100
#define MAX_LEN 100
int cmp(const void *a, const void *b) {
return strcmp((const char *)a, (const char *)b);
}
int is_happy(const char *s) {
int n = strlen(s);
for (int i = 0; i < n; i++) {
if (s[i] == 'h') {
for (int j = i + 1; j < n; j++) {
if (s[j] == 'a') {
for (int k = j + 1; k < n; k++) {
if (s[k] == 'p') {
for (int l = k + 1; l < n; l++) {
if (s[l] == 'p') {
if (l - i == 4) {
return 1;
}
}
}
}
}
}
}
}
}
return 0;
}
int main() {
int n;
char s[MAX_N][MAX_LEN + 1];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", s[i]);
}
qsort(s, n, sizeof(s[0]), cmp);
for (int i = 0; i < n; i++) {
if (is_happy(s[i])) {
printf("%s\n", s[i]);
}
}
return 0;
}
```
这个程序首先读入了一个正整数n和n个字符串,然后按字典序对这些字符串进行排序。接着,它遍历每个字符串,并调用is_happy()函数进行判断,如果该字符串是快乐字符串,则输出该字符串。is_happy()函数实现了判断一个字符串是否是快乐字符串的功能。它遍历了字符串中的每个字符,然后依次判断是否有'h'、'a'、'p'、'p'这四个字符相邻出现,并且它们出现的位置相差恰好为4,如果满足这个条件,则该字符串是快乐字符串。
阅读全文