C语言 统计文本文件中出现的次数最多和最少的字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 统计文本文件中出现的次数最多和最少的字符串相关的知识,希望对你有一定的参考价值。
比如best中 b be bes best e es est 等都属于字符串...
文本文件里是一段英语作文...
最好能给出主要代码...说思路的也最好说清楚..
谢谢了...
里面统计单词的部分可以利用。改一下头文件,输入输出换printf 和 scanf就是了!
方法吗就是:先读取一个不为空格的字符,其为某单词的首字母,再一直读到一个空格为止,说明这个单词,已经读完,记录此之前读了多少次(设置一个变量k就可,读一个不为空格的字符就+1)就是几个字符了。按此方法读下一个单词。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
int num0=0;
int num1=0;
int tempernum0=0;
int line=0;
int i;
string str;//不可以用char定义。
string filename;
fstream file;
cout<<"please input the filename:";
cin>>filename;
file.open(filename.c_str());//输入的是D:\guo.txt
if(!file)
cout<<"file open fail"<<endl;
cout<<"文本中的内容是:"<<endl;
while(getline(file, str, '\n'))
cout<<str<<endl;//文本输出
line++;//行数统计
int n=str.length();
if(n!=0)
tempernum0++;//统计非空行末尾的单词数目
string::iterator itr=str.begin();
for(i=0;i<n-1;i++)
if(itr[i]==' '&&itr[i+1]!=' ')
num0++;//字数统计,非空行末尾的单词没有被统计进去,最后要再加上非空行的行数。
for(i=0;i<n;i++)
if(itr[i]!=' ')
num1++;//字符数目统计
cout<<"行数是:"<<line<<endl;
cout<<"单词数是:"<<num0+tempernum0<<endl;
cout<<"字符数是:"<<num1<<endl;
file.close();
return 0;
参考技术A 1、定义一个二维数组,用于存放不同的字符串,一个一维数组,用于记录次数
2、搜索整个文本,取出每个字符串,两个空格之间的即为字符串
3、将取出的字符串放到数组中,每取出一个就与之前的比较,如果都不相同就存储,否则将已有字符串次数+1
4、搜索完文本后,找到一维数组中最大和最小的数,即可得到其对应的字符串本回答被提问者采纳
使系统生成50个0-9之间的随机数
使系统生成50个0-9之间的随机数,将每个数字出现的次数存入一个一维数组中,统计出现次数最多和出现次数最少的数字,及出现次数和出现频率。
import java.util.Scanner;
public class Anpa1010doubleball {
public static void main(String[] args) {
int [] b=new int [50]; //定义长度为50的数组b
int [] number=new int[10]; //定义长度为10的数组number用来统计数组b中
//产生的0~9的个数
for(int i=0;i<b.length;i++){
b[i]=(int)(Math.random()*10); //随机生成50个0~9的数,
//并存到数组b中
}
for(int i=0;i<b.length;i++){
int num=b[i]; //将数组b中的数提取出来
number[num]++; //因为0~9这10个数对应数组number的下表位, //所以从数组b中提取出来的0~9直接赋到数组number中
//比如num=b[i]=0,则number[0]自增一次
}
int most=0; //统计生成最多的数
int least=50; //统计生成最小的数
for(int i=0;i<number.length;i++){
while(number[i]>most){ //比较生成的数中最多的数的个数
most=number[i]; //与生成最大值和最小值相似
break;
}
while(number[i]<least){ //比较生成的数中最少的数的个数
least=number[i];
break;
}
System.out.print(i+"出现的次数是"+number[i]+"\n");
//0~9每个数出现的次数
}
//有可能出现好几个相同次数的数,所以用for循环。
for(int i=0;i<number.length;i++){
while(number[i]==most){
System.out.println("出现最多的数是"+i+",共出现"+number[i]+"次,出现频率为:"+(number[i]*0.02));
break;
}
while(number[i]==least){
System.out.println("出现最少的数是"+i+",共出现"+number[i]+"次,出现频率为:"+(number[i]*0.02));
break;
}
}
以上是关于C语言 统计文本文件中出现的次数最多和最少的字符串的主要内容,如果未能解决你的问题,请参考以下文章