一段程序,先提示输入一个单词,然后再输入一个句子,在这个句子中统计单词出现的次数。怎么实现。 30
例如:输入:the输入:thelandandthethe在这句话中出现2次用什么方法保存这句话,使用文件?还有,怎么保证我用读单词并比较。...
例如:输入:the
输入:the land and the
the 在这句话中出现2次
用什么方法保存这句话,使用文件?还有,怎么保证我用读单词并比较。 展开
输入:the land and the
the 在这句话中出现2次
用什么方法保存这句话,使用文件?还有,怎么保证我用读单词并比较。 展开
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都写到一个文件就可以了,单词比较的话,因为有空格,所以你输入的就是一个单词啊,只要找到上边所需要查找的字符串就行。
// 输入: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都写到一个文件就可以了,单词比较的话,因为有空格,所以你输入的就是一个单词啊,只要找到上边所需要查找的字符串就行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询