请编写一个函数int pattern_index(char substr[],char str[]),该函数执行含通配符“?”的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位

admin2009-01-15  77

问题 请编写一个函数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循环用来查找字符串的使用
转载请注明原文地址:https://kaotiyun.com/show/FOID777K
0

最新回复(0)