#include <stdio.h> #include <string.h> #include <ctype.h> #define LEN 100 // 递归函数进行通配符匹配 int wildcardMatch(const char *pattern, const char *str) { if (*pattern == '\0') { return *str == '\0'; } if (*pattern == '*') { // 如果是星号,尝试跳过星号并匹配剩余部分 while (*pattern == '*') { pattern++; } if (*pattern == '\0') { return 1; } for (int i = 0; str[i]!= '\0'; i++) { if (wildcardMatch(pattern, str + i)) { return 1; } } return 0; } else if (*pattern == '?') { // 如果是问号,检查下一个字符是否为数字或字母 return *str!= '\0' && (isalnum(*str) || islower(*str) || isupper(*str)) && wildcardMatch(pattern + 1, str + 1); } else { // 如果是普通字符,进行大小写不敏感的比较并继续匹配下一个字符 return (tolower(*pattern) == tolower(*str)) && wildcardMatch(pattern + 1, str + 1); } } int main() { char s1[LEN], s2[LEN]; while (scanf("%s\n%s", s1, s2)!= EOF) { if (wildcardMatch(s1, s2)) { printf("true\n"); } else { printf("false\n"); } } return 0; }