问题 问答题

使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数un(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。

str1为“asdfsfdfg”
str2为“sf”则返回1
str2为“df”则返回3
注意:不能修改函数的其他部分。
试题程序:
#include<iostream.h>
//注意只能使用int类型,不能类型转换
int fun(char*str1,char*str2)


void main()

char str1[l024];
char str21256];
cout<<"please input a string:"<<end1;
cin.getline(str1,1024);
cout<<"please input other string:"<<end1;
cin.getline(str2,256);
cout<<fun(str1,str2);
cout<<end1;
return;

答案

参考答案:int fun(char*str1,char*str2)
{
int size=0;
int strllen;
int str2len;
for(strlfen=0;str1[strllen]!=0;str1len++);
for(str2len=0;str2[str2len]!=0;str2len++);
for(int i=0;i<strllen;i++)
{
int j=0;
for(;j<str2len;j++)
if(str1[i+j]!=str2[j])
break;
if(j==str2len)
{
++size;
i+=j;
}
}
return size;
}

解析: 本题考查的是字符串查找算法。首先求出两个字符串的长度,然后循环遍历第1个字符串,再使用一个内循环遍历第2个字符串,判断两个字符串相应位置是否一致。如果遍历完第2个字符串,所有位置都一致,则记数值size增1,即找到一个子串。

单项选择题
单项选择题