/*
题目如下:
使用VC6打开考生文件夹下的源程序文件modi2.cpp.
请完成fun(char* s1,char* s2),此函数的功能是计算s1
中出现s2的个数,当不出现时,则返回0.
如:
s1为”1112223333aaaaeeffd”
s2为”11”则返回1
s2为”aa”则返回2
*/
这是一道二级C++题目
一、首先,用基本的图解来描述一下思路:
二、用随意自己的语言写下大致过程,有特殊情况到一般情况:
对于S1首位,
if S2[0]=S1[0];
…
s2[n-1]=s1[n-1];
则->对输出标志位增一
然后是一般情形,
s2[0]=s1[k-1]
…
s2[m-1]=s1[m-1+k-1]
三、写下基本的程序、
include "stdafx.h"
include "iostream"
using namespace std;
int fun(char* s1, char* s2)
{
int flag = 0;
//求字符指针的长度也可以这么求
//int s1len;
//for(s1len=0;s1[s1len]!=0;s1len++)
//这个是用累计来计算
for (int i = 0; i < strlen(s1); i++)//最后的i是等于strlen(s1)的
{
int j = 0;
for (; j < strlen(s2);j++)
{
if (s2[j] != s1[j + i])
break;
}
if (j == strlen(s2))
{
i += strlen(s2);
flag++;
i--;
}
}
return flag;
}
int _tmain(int argc, _TCHAR* argv[])
{
int delay;
char s1[1024];
char s2[256];
cout << "please input a string:" << endl;
cin.getline(s1, 1024);
cout << "please input other string:" << endl;
cin.getline(s2, 256);
cout << fun(s1, s2);
cout << endl;
cin >> delay;
return 0;
}
四、带入一些简单的例子检验对否。
这里我带入的是111111111,和111