P1042 字符统计
P1042 字符统计
转跳点:
1042 字符统计 (20分)
输入格式:
输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。
输出格式:
在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。
输入样例:
This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........
输出样例:
e 7
这道题又是个计数题了一看出现次数最多,ASCII字符,加了空格,开个128的数组一个个计数,最后再跑一边保存下最大值的索引,%c输出索引,%d输出索引上的值完事。
上面那段就是我自以为是加眼瞎的后果。唉,枯了枯了,人家只要求输出英文字母数量,而且输入会有大小写,但只输出小写字符,(自戳双目)。要过滤非英文字符有两种方法。
第一种就直接 if ((x >= ‘a’) && (x <= ‘z’) || (x >= ‘A’) && (x <= ‘Z’) )
第二种则是用C语言里的ctype头文件里的 isalpha 函数筛出(个人觉得其实本质上没多大区别(>人<;))
这个是ctype里isxxx系列函数的实现方式
#define __ISCTYPE(c, mask) (MB_CUR_MAX == 1 ? (_pctype[c] & mask) : _isctype(c, mask))//这句是核心
__CRT_INLINE int __cdecl __MINGW_NOTHROW isalnum(int c) {return __ISCTYPE(c, (_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isalpha(int c) {return __ISCTYPE(c, _ALPHA);}//这句是识别字母的
__CRT_INLINE int __cdecl __MINGW_NOTHROW iscntrl(int c) {return __ISCTYPE(c, _CONTROL);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isdigit(int c) {return __ISCTYPE(c, _DIGIT);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isgraph(int c) {return __ISCTYPE(c, (_PUNCT|_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW islower(int c) {return __ISCTYPE(c, _LOWER);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isprint(int c) {return __ISCTYPE(c, (_BLANK|_PUNCT|_ALPHA|_DIGIT));}
__CRT_INLINE int __cdecl __MINGW_NOTHROW ispunct(int c) {return __ISCTYPE(c, _PUNCT);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isspace(int c) {return __ISCTYPE(c, _SPACE);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isupper(int c) {return __ISCTYPE(c, _UPPER);}
__CRT_INLINE int __cdecl __MINGW_NOTHROW isxdigit(int c) {return __ISCTYPE(c, _HEX);}
 
这道题我莫没有用128做数组大小,因为只统计字母,而字母只有26个。所以……嗯!本着节约(kou‘men)的理念开了26,并且对输入进行了特殊处理,刚好可以存下。所谓的特殊处理就是 a从96开始所有输入的字母都转成小写后减去96,刚好大小就是0~25,输出的时候记得加回96
AC代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> //统计英文字母个数的数组
int count[26]; int main(void)
{
char ch;
int max = 0; //存储最大值索引 while ((ch = getchar()) != '\n')
{
if (isalpha(ch))
{ //要求输出英文字母
count[(int)tolower(ch) - 96]++;
}
} for (int i = 0; i < 26; i++)
{
if (count[i] > count[max])
{
max = i;
}
} printf("%c %d\n", (char)(max + 96), count[max]); return 0;
}
PTA不易,诸君共勉!
P1042 字符统计的更多相关文章
- ytu 1910:字符统计(水题)
		
字符统计 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 421 Solved: 92[Submit][Status][Web Board] Descri ...
 - PAT-乙级-1042. 字符统计(20)
		
1042. 字符统计(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 请编写程序,找出一段给定文字中出现最 ...
 - PAT 乙级 1042 字符统计(20) C++版
		
1042. 字符统计(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 请编写程序,找出一段给定文字中出现最 ...
 - PAT 1042 字符统计(20)(思路)
		
1042 字符统计(20)(20 分) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格 ...
 - 【算法笔记】B1042 字符统计
		
1042 字符统计 (20 分) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空 ...
 - 3218: 字符串字符统计—C语言
		
3218: 字符串字符统计—C语言 时间限制: 1 Sec 内存限制: 128 MB提交: 270 解决: 129[提交][状态][讨论版][命题人:smallgyy] 题目描述 编写一函数,由实 ...
 - PAT(B) 1042 字符统计(Java)字符串 正则表达式 统计
		
题目链接:1042 字符统计 (20 point(s)) 题目描述 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 A ...
 - java字符统计+字符串压缩
		
要实习了.突然发现自己好像什么都不会,就去看看题吧.在网上看到一个字符串压缩的题.看了一眼,感觉用python很简单.一个for循环+字典就可以搞定. 但是呢,主要还是java.下面就用java来实现 ...
 - PAT 1042. 字符统计(20)
		
请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束( ...
 
随机推荐
- windows下svn post-commit的实现
			
前言: 好的!在结束了上一博客教程的Subversion安装之后.我们开始了下一项工作,windows版本下 svn post-commit的实现.说实话,这方面的知识网上的知识并不是很多~~~~~~ ...
 - [python]ubuntu下的python2和python3
			
在终端分别输入python,python2,python3python和python2默认都是python2python3才是python3 Ubuntu下是默认没有pip的,需要自己手动安装 sud ...
 - 本周总结(19年暑假)—— Part3
			
日期:2019.7.28 博客期:109 星期日 这几天要练车,嗯呢,但是对于分布式数据库的研究并没有停止!
 - mac允许安装任何来源的软件
			
如果在“系统偏好设置”--“安全性与隐私”--“通用”版面没有像下面的选项.那么请打开终端,使用命令行操作,之后重新进刚刚的设置界面,会出现“任何来源”的选项. 命令行:(请复制使用) sudo sp ...
 - 《React后台管理系统实战 零》:基础笔记
			
day01 1. 项目开发准备 1). 描述项目 2). 技术选型 3). API接口/接口文档/测试接口 2. 启动项目开发 1). 使用react脚手架创建项目 2). 开发环境运行: npm s ...
 - 视图家族 & 路由组件
			
目录 视图家族 & 路由组件 视图集与路由组件 基于 GenericAPIView 的十大接口 基于 generics 包下工具视图类的六大基础接口 视图集 路由组件:必须配合视图集使用 自定 ...
 - Windows驱动开发-IoCompleteRequest
			
IoCompleteRequest 例程表示调用者的已经完成了对指定I/O请求的所有处理操作,并且向I/O管理器返回指定的IRP报文. //函数原型 VOID IoCompleteRequest( I ...
 - CNN反向传播算法过程
			
主模块 规格数据输入(加载,调格式,归一化) 定义网络结构 设置训练参数 调用初始化模块 调用训练模块 调用测试模块 画图 初始化模块 设置初始化参数(输入通道,输入尺寸) 遍历层(计算尺寸,输入输出 ...
 - 前端面试题CSS一(题目来源网络)
			
一.什么是html5语义化? 使用合理,正确的html标签格式化文档. 二.CSS样式优先级? 就近原则,行内>内联>外联 三 什么是盒模型? 主要分为两种,w3c标准盒模型,IE标准模型 ...
 - php-计算2个时间之差
			
//$startdate是开始时间,$enddate是结束时间 <?php $startdate="2011-3-15 11:50:00"; $enddate="2 ...