问题 问答题

请编写一个函数int pattern_index(char substr[],char str[]),该函数执行含通配符“”的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。要求使用 for循环实现。输出结果如下: 子串起始位置:5 注意:部分源程序已存在文件test20_2.cpp中。 请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。 文件test20_2.cpp的内容如下: #include<iostream.h> int pattern_index(char substr[],char str[]) { } void main ( ) { char *substring,*string; int same; substring="gram"; string="this program return index of substring"; same=pattern_index(substring, string); if(same) cout<<"子串起始位置: "<<same<<end1; else cout<<"匹配不成功" <<end1; }

答案

参考答案:

解析:int pattern_index(char substr[],char str[]) { int i,j,k; for(i=0;str[i];i++) for(j=i,k=0;(str[j]==substr[k])||(substr[k]==’’);j++,k++) if(!substr[k+1]) return(i); return(0); }本题主要考查的是考生使用for循环和一维数组的综合能力。对于复杂查找,往往使用for的多重循环,注意里层for循环用来查找字符串的使用

填空题
多项选择题