代码如下:

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. char ch;
  5. char s_letter[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  6. char b_letter[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  7. int num[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  8. for (int i = 1; i <= 10000; i++) {
  9. ch = cin.get();
  10. if(ch == '#')break;
  11. for(int j=0;j<=25;j++)
  12. {
  13. if(ch==s_letter[j] || ch==b_letter[j]) num[j]++;
  14. }
  15. }
  16. for(int i=0;i<=25;i++)
  17. {
  18. cout<<s_letter[i]<<"出现的个数为"<<num[i]<<endl;
  19. }
  20. }

(拓展)统计26个字母在一篇新闻中各自出现的频率。

代码如下:

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. char ch;
  5. char s_letter[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  6. char b_letter[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  7. int num[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  8. float f_num[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  9. int Sum;
  10. for (int i = 1; i <= 10000; i++) {
  11. ch = cin.get();
  12. if(ch == '#')break;
  13. for(int j=0;j<=25;j++)
  14. {
  15. if(ch==s_letter[j] || ch==b_letter[j]) num[j]++;
  16. }
  17. }
  18. for(int i=0;i<=25;i++)
  19. {
  20. cout<<s_letter[i]<<"出现的个数为"<<num[i]<<endl;
  21. }
  22. for(int i=0;i<=25;i++)
  23. {
  24. Sum+=num[i]; //计算字母总数
  25. }
  26. for(int i=0;i<=25;i++)
  27. {
  28. f_num[i]=num[i]*(1.0)/Sum * 100; //计算字母出现的频率*100
  29. }
  30. for(int i=0;i<=25;i++)
  31. {
  32. cout<<s_letter[i]<<"出现的频率为";
  33. printf("%.3f",f_num[i]);//保留三位小数
  34. cout<<"%"<<endl;//输出频率为百分之几
  35. }

}

(拓展)英文新闻由文件输入,统计其中a-z这26个字母各出现的次数和总字符个数。(不区分大小写)

  1. #include <iostream>
  2. #include <fstream>
  3. #include <cassert>
  4. #include <string>
  5. #include<algorithm>
  6. #include<iomanip>
  7. using namespace std;
  8. int main()
  9. { char s_letter[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  10. char b_letter[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  11. int num[26]={0};
  12. float f_num[26]={0};
  13. ifstream infile;
  14. int Sum=0;
  15. infile.open("C:\\Users\\yyz22\\Desktop\\news1.txt");//打开文件txt 根据自身需求更改绝对路径 注意是双反斜杠\\
  16. char ch;
  17. infile >> noskipws;//不跳过空格和换行
  18. while (!infile.eof())//循环直到文本末尾结束
  19. {
  20. infile>>ch;
  21. cout<<ch;
  22. for(int j=0;j<=25;j++)
  23. {
  24. if(ch==s_letter[j] || ch==b_letter[j]) num[j]++;//统计字母出现个数
  25. }
  26. }
  27. infile.close();
  28. cout<<endl;
  29. for(int i=0;i<=25;i++)
  30. {
  31. cout<<s_letter[i]<<"出现的个数为"<<num[i]<<endl;
  32. Sum= Sum + num[i]; //计算字母总数
  33. }
  34. cout<<"总数:"<<Sum<<"\n";
  35. for(int i=0;i<=25;i++)
  36. {
  37. f_num[i]=float(num[i])/Sum; //计算字母出现的频率
  38. }
  39. for(int i=0;i<=25;i++)
  40. {
  41. cout<<s_letter[i]<<"出现的频率为";
  42. cout<<fixed<<setprecision(6)<<f_num[i]*100;
  43. cout<<"%"<<endl;//输出频率为百分之几
  44. }
  45. }

总结:for循环处理ch=cin.get(); 解决了enter结束输入流的问题。分别用if判断是什么字符或者#结束。

 --yyz 1806

2018.10.24

实验:输入一篇英文新闻,以“#”结束,统计其中a-z这26个字母各出现的次数和总字符个数。(不区分大小写)的更多相关文章

  1. golang统计出其中英文字母、空格、数字和其它字符的个数

    方法一 通过ASCII码表判断并统计 package main import "fmt" func charactortype() { var s2 string = " ...

  2. 【Python】【demo实验18】【练习实例】【统计输入字符串中,数字的个数、英文字母的个数及其他符号的个数】

    原题: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. (本题暂时不支持中文字符及汉字) 我的代码: #!/usr/bin/python # encoding=utf-8 # -* ...

  3. js控制文本框只能输入中文、英文、数字与指定特殊符号.

    先在'' 里输入 onkeyup="value=value.replace(/[^\X]/g,'')" 然后在(/[\X]/g,'')里的 X换成你想输入的代码就可以了, 中文u4 ...

  4. 限制HTML的input只能输入数字、英文、汉字...

    限制HTML的input只能输入数字.英文.汉字... 关键词:正则表达式, JavaScript, HTML, input 常用HTML正则表达式1.只能输入数字和英文的:<input onk ...

  5. (js) 输入框只能输入中文、英文、数字、@符号和.符号

    只能输入中文.英文.数字.@符号和.符号<input type="text" onkeyup="value=value.replace(/[^\a-\z\A-\Z0 ...

  6. C++语言,统计一篇英文文章中的单词数(用正则表达式实现)

    下面的例子展示了如何在C++11中,利用regex_search()统计一篇英文文章中的单词数: #include <iostream> #include <regex> #i ...

  7. JS 控制文本框只能输入中文、英文、数字与指定特殊符号

    想做姓名输入的js判断是否是中文,但是网上找的很多是源于一篇文章的,判断中文的正则式不对,后来找到一个可以准确判断了,但是是监测里面有中文的就行,跟我想要的只能输入中文的意思相左,所以又找了下面的 J ...

  8. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号

    JS 控制文本框仅仅能输入数字 <input onkeyup="value=value.replace(/[^0-9]/g,'')"onpaste="value=v ...

  9. Java Nested Classes(内部类~第一篇英文技术文档翻译)

    鄙人最近尝试着翻译了自己的第一篇英文技术文档.Java Nested Classes Reference From Oracle Documentation 目录 嵌套类-Nested Classes ...

随机推荐

  1. FreeCodeCamp---advanced Algorithm Scripting解法

    Exact Change 设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) ...

  2. 基于虹软sdk,java实现人脸识别(demo)

    ## 开发环境准备:###开发使用到的软件和工具:* Jdk8.mysql5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).liba ...

  3. Codeforces 1053 C - Putting Boxes Together

    C - Putting Boxes Together 思路: 求带权中位数 用树状数组维护修改 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) ...

  4. JAVA基础知识总结:十八

    一.进程和线程 1.进程 是一个程序的运行状态和资源占用的描述 进程的特点: a.独立性:不同的进程之间是独立的,相互之间资源不共享 b.动态性:进程在系统中不是静止不动的,而是一直活动的 c.并发性 ...

  5. Unity --- MeshRenderer之网格合并

    创建如图所示的对象结构,parent为空对象,然后将下面的代码挂载到parent对象上运行即可. using UnityEngine; using System.Collections; public ...

  6. Spring Boot入门第一天:Hello, Spring Boot!

    原文链接 1. 新建一个Maven Web项目. 2. 配置pom.xml文件. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  7. learn the python the hard way习题11~17总结

    关于 input() 格式: input("prompt")功能:从 CLI 获取 User 的一个输入,显示 promt 的内容,并且返回一个 string 类型的数值其他:如果 ...

  8. 无法访问SVN历史记录的问题

      今天在eclipse中发现无法访问SVN的历史记录,提示条目不可读,截图如下: 用小乌龟客户端试了试也不行,截图如下: 最后解决办法是在SVN服务器上将代码仓库中conf目录下的svnserve. ...

  9. 雷林鹏分享:使用 XSLT 显示 XML

    使用 XSLT 显示 XML 通过使用 XSLT,您可以把 XML 文档转换成 HTML 格式. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT(eXtensible ...

  10. 错误不能中断(不许因错误或异常而产生阻断性Bug)

    错误不能终断(不许因错误或异常而产生阻断性Bug),当遇到错误或异常时,要处理掉,并且给予合理提示(比如:XXX失败,请重试)