C语言 输入一个字符串,分别进行回文判断和括号匹配。
时间: 2024-12-06 18:26:50 浏览: 39
在C语言中,我们可以创建两个函数来实现这个功能:一个用于检查字符串是否是回文,另一个用于验证括号是否有效。下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
// 回文判断函数
bool isPalindrome(char str[]) {
int start = 0;
int end = strlen(str) - 1;
while (start < end) {
if (str[start] != str[end]) {
return false; // 如果首尾字符不同,不是回文
}
start++;
end--;
}
return true; // 所有字符都匹配了,是回文
}
// 括号匹配函数,假设只有 '()' 这种括号
bool isValidBrackets(char str[]) {
stack_t brackets = {0}; // 使用栈来存储左括号
for (int i = 0; str[i]; ++i) {
char c = str[i];
// 如果遇到左括号,入栈
if (c == '(' || c == '{' || c == '[') {
push(&brackets, c);
} else { // 遇到右括号
char top = pop(&brackets); // 弹出栈顶元素
if (top == '(' && c != ')') return false;
if (top == '{' && c != '}') return false;
if (top == '[' && c != ']') return false;
}
}
// 如果所有的左括号都有对应的右括号,返回true
return brackets.top == 0;
}
// 主函数示例
int main() {
char input[100];
printf("请输入一个字符串(回文测试和括号匹配):");
fgets(input, sizeof(input), stdin);
bool palindrome = isPalindrome(input);
bool bracketsMatched = isValidBrackets(input);
if (palindrome) {
printf("输入的字符串是回文。\n");
} else {
printf("输入的字符串不是回文。\n");
}
if (bracketsMatched) {
printf("括号匹配有效。\n");
} else {
printf("括号匹配无效。\n");
}
return 0;
}
```
阅读全文