C语言 统计文本文件中出现的次数最多和最少的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 统计文本文件中出现的次数最多和最少的字符串相关的知识,希望对你有一定的参考价值。

比如best中 b be bes best e es est 等都属于字符串...
文本文件里是一段英语作文...
最好能给出主要代码...说思路的也最好说清楚..
谢谢了...

给你一个C++写的统计英文文本字符,单词,行数的程序。
里面统计单词的部分可以利用。改一下头文件,输入输出换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语言 统计文本文件中出现的次数最多和最少的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Java,输入一字符串,统计连续出现最多的字符,以及出现次数。 【编程】

c语言编程 统计输入多个字符串中每个字串出现的次数

C语言 计算字符串中子串出现的次数 求更改

c语言数组问题

使系统生成50个0-9之间的随机数

具有最多和最少比较的堆排序输入