一段程序,先提示输入一个单词,然后再输入一个句子,在这个句子中统计单词出现的次数。怎么实现。

例如:输入:the
输入:the land and the
the 在这句话中出现2次
用什么方法保存这句话,使用文件?还有,怎么保证我用读单词并比较。

// 查找字符串在另一个字符窜的位置
// 输入:sStr--查找字符串,dStr--目的字符串
// 返回值:查找字符串在目的字符窜的个数
int SearchStr(char* sStr,char* dStr)
{
int count = 0;
// 暂存字符串
char*tmpChar = new char[_MAX_PATH];
if (NULL == sStr || NULL == dStr)
{
// 没有要搜索的字符串
return -1;
}
if (0 == strlen(sStr)||0==strlen(dStr))
{
return -2;
}
tmpChar = dStr;
while(NULL != tmpChar)
{
tmpChar = strstr(tmpChar,sStr);
if (NULL != tmpChar)
{
// 次数加一
count++;
// 将找到的字符串提出
tmpChar = &tmpChar[strlen(sStr)];
}
}
return count;
}

int _tmain(int argc, _TCHAR* argv[])
{
char *findWords;
char *sentences;
char flag;
int cout;
printf("是否进入测试?y/n\n");
scanf("%c",&flag);
// 解决回车键的问题。可以讲输入缓冲区清除
fflush(stdin);
while('n'!=flag)
{
findWords= new char[_MAX_PATH];
sentences = new char[_MAX_PATH];
printf("请输入要查找的字符串%s\n");
scanf("%s",findWords);
fflush(stdin);
printf("请输入包含该字符串的句子%s\n");
//scanf("%s",sentences);
// 将带有空格的语句放入
// 输入最多259个字符遇到回车结束
// %[]将所有字符串包括空格都记录缓冲区
scanf("%259[^\n]", sentences);
fflush(stdin);
// 这里用一个简单的分割字符串模式,类似split
// 初始化wordCount,单词个数
cout =0;
// 得到第一个字符串中是否含有要查找的单词
cout=SearchStr(findWords,sentences);
//cout = SearchStr(findWords,sentences);
if (cout<=0)
{
printf("输入有误\n");
}
else
{
printf("%s在这句中出现的次数为%d\n",findWords,cout);
}
flag ='\0';
printf("是否还要继续?y/n\n");
scanf("%c",&flag);
fflush(stdin);
delete findWords;
delete sentences;
}
return 0;
}

好久没写过了,这是一个简单的程序,如果想保存的话,读写文件就可以了,将每个printf都写到一个文件就可以了,单词比较的话,因为有空格,所以你输入的就是一个单词啊,只要找到上边所需要查找的字符串就行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-17
用查找的方法就行了,然后输出这句话
相似回答