C语言 统计相同单词出现次数
解决时间 2021-04-28 20:54
- 提问者网友:情歌越听越心酸
- 2021-04-28 09:11
必需有一个结构体 struct,然后统计相同单词出现次数。
比如 输入 ABC(空格)DEF(空格)ABC(空格)CBA(回车)则输入
ABC=2 DEF=1 CBA=1
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-04-28 09:27
帮你写了一个,看看吧。根据自己的实际情况再改改,如果有必要的话:
#include <stdio.h>
#include <string.h>
#define M 1000
#define N 20
void main()
{
char str1[M][N];//单词字串结果存放数组
char str2[M];//输入串或者用char *str2也可,这样可以
int strC[M];//单词字串计数数组.对应每个单词串,拥有一个计算器
int i=0,j=0,k=0,t=0,x=0;
gets(str2);//接受行输入
t=strlen(str2)+1;//计算该行中总字符数
printf("输入字串为:%s\n",str2);
while(j<t)
{
for(;str2[j]==32;j++);//如果串中是空格,则拼命跳过,不计
while(k<N&&str2[j]!=32) //不是空格,且没有超出题目中的要求: 每个字串长度小于N.如果大于N,自动截除.
str1[i][k++]=str2[j++]; //将输入行字串分割存放到结果数组中
str1[i][k]='\0'; //如果该串原来大于20,会被自动截除
strC[i]=1; //计数
for(x=0;x<i;x++) //与前面的串比较
if(strncmp(str1[i],str1[x],N)==0)//调用库函数,不分大小写与前面的串相比,相同则返回0.
{
strC[x]++; //相同,计数器数组增加
i--; //该串为重复串,总串数不增加
break; //跳出for循环
}
i++; //无重复串,则总字串数增加
k=0;
}
printf("结果:\n");
t=0;
for(;t<i;t++)//不超出总串数
printf("%s,%d\n",str1[t],strC[t]);
}
全部回答
- 1楼网友:三千妖杀
- 2021-04-28 11:11
使用C++ STL map 三行代码都可以解决了
- 2楼网友:愁杀梦里人
- 2021-04-28 10:02
12678 7643 6764 67
我要举报
大家都在看
推荐资讯