利用c++编写代码来实现一下内容:首先老师有一个匹配模版,比如是“aa[123]bb”这一个字符串,同学们交的各种作业字符串如aa1bb、aa2bb、aa3bb都算是正确匹配看,而aacbb就是错误的字符串。 (即待查字符串对应于模版方括号内的部分,应该为方括号内字符串的一个子字符)。输入的第一行为一个整数n,表示有多少个学生的作业,即有多少行需要检查的字符串。(1<=n<=50) 中间为n行字符串,代表着n个学生们写的作业。每个字符串长度小于50。 最后一行为1行字符串,代表着老师给的匹配模板。 输出格式: 输出合格的字符串的行号和该字符串。(中间以空格隔开)
时间: 2023-05-12 14:04:20 浏览: 123
以下是利用 C 语言编写的代码实现以上内容:
#include <stdio.h>
#include <string.h>
int main() {
char pattern[50], str[50];
int n, i, j, len, flag;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%s", str);
len = strlen(str);
flag = 1;
for (j = 0; j < len; j++) {
if (str[j] == pattern[2] && str[j-1] == pattern[1] && str[j-2] == pattern[0] && str[j+1] == pattern[3] && str[j+2] == pattern[4]) {
printf("%d %s\n", i, str);
flag = 0;
break;
}
}
if (flag) {
continue;
}
}
return 0;
}
在这段代码中,我们首先定义了两个字符数组 pattern 和 str,分别用于存储匹配模板和学生作业字符串。然后,我们通过 scanf 函数读入一个整数 n,表示有多少个学生的作业需要检查。接下来,我们使用一个 for 循环来读入 n 行字符串,代表 n 个学生写的作业。在循环中,我们首先使用 strlen 函数获取当前字符串的长度,然后使用一个 flag 变量来标记当前字符串是否符合匹配模板。接着,我们使用一个 for 循环遍历当前字符串的每一个字符,如果当前字符是匹配模板中方括号内的字符,并且前两个字符和后两个字符分别与匹配模板中的字符相等,则说明当前字符串符合要求,我们就输出当前字符串的行号和该字符串,并将 flag 变量置为 0。最后,如果 flag 变量仍然为 1,则说明当前字符串不符合要求,我们就直接进入下一次循环。
阅读全文