请编写一个函数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;
}
第1题:
编写一个函数findStr(),该函数统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为“as”,函数返回值是6。
函数ReadWrite()的功能是实现从文件in40.dat中读取两个字符串,并调用函数findstr(),最后把结果输出到文件out40.dat中。
注意:部分源程序已给出。
请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你所编写的若干语句。
include<stdio.h>
include<string.h>
include<conio.h>
int findStr(char *str,char *substr)
{
main ( )
{
char str[81],substr[3];
int n;
clrscr();
printf("输入原字符串: ");
gets(str);
printf ("输入子字符串: ");
gets(substr);
puts(str);
puts(substr);
n=findStr(str,substr);
printf("n=%dkn",n);
ReadWrite();
}
ReadWrite()
{
char ch, str[81],substr[3];
int n,len, i=0;
FILE *rf,*wf;
rf=fopen("in40.dat","r");
wf=fopen("out40.dat","w");
while(i<5)
{
fgets(str,80,rf);
fgets(substr,10,rf);
len=strlen(substr)-1;
ch=substr[len];
if(ch=='\n'||ch==Oxla)
substr[len]=0;
n=findStr(str,substr);
fprintf(wf,"%dln",n);
i++;
}
fclose(rf);
fclose(wf);
}
第2题:
请编写一个函数char *fun(char *s),其中s代表一个字符串。函数fun()的功能是将字符串s的元素倒置。例如,输入为“teacher”,则应输出“rehcaet”。
注意:部分源程序已存在文件PROC10.cpp中。
请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。
文件PROC10.cpp的内容如下:
//PROC10. cpp
include <iostream>
include <string>
using namespace std;
char *fun(char *s);
int main ( )
{
char str[81];
cout<<"Please enter a string:\n";
cin>>str;
cout<<"The result is:"<<fun(str));
cout<<end1;
return 0;
}
char*fun(char*s)
{
//* * * * * * * * *
}
第3题:
编写一个函数findStr(char*str,char*substr),该函数统计一个长度为2的子字符串substr在另一个字符串str中出现的次数,该次数作为函数值返回。例如,假定输入的字符串为”asd asasdfg asd as zx67 asdmklo”,子字符串为”as”,函数返回值是6。 函数ReadWrite实现从文件in.dat中读取两个字符串,并调用函数findStr,最后把结果输出到文件out.dat中。 注意:部分源程序存在test.c文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数findStr的花括号中 填入你编写的若干语句。
第4题:
下列给定程序中,函数fun()的功能是:统计字符串substr在字符串srt中出现的次数。例如,若字符串为aaas 1 kaaas,子字符串为as,则应输出2。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include <stdio.h>
fun (char *str, char *substr)
{int i, j, k, num=0;
/*************found**************/
for (i=0, str [i], i++)
for (j=i, k=O; substr [k]==str [ j ]; k++, j ++ )
if (substr [k+l]==' \0')
{num++;
break;
}
return num;
}
main ( )
{ char str[80],substr[80];
printf("Input a string: ");
gets (str);
printf("Input a sbustring: ");
gets (substr);
printf ("%d\n ", fun (str, substr) );
第5题:
已知strcpy 的函数原型:char *strcpy(char
*strDest, const char *strSrc)其中strDest 是目的字符
串,strSrc 是源字符串。不调用C++/C 的字符串库
函数,请编写函数strcpy。
char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) != ‘\0’)
;
return tempptr ;
}