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个英文字母,以回车结束( ... 
随机推荐
- (转)notepad++去重
			notepad++ 真是强大,几乎你能想到的处理文本方法都可以用它来实现,因为他有强大的插件团! 例如1:去除重复行 先安装TextFx插件 在菜单TextFX-->TextFX Tools下 ... 
- 在Centos 7.7下用minikube部署单节点kubernetes.
			centos8 下用yum安装docker-ce会报错,说明docker-ce对centos8支持还不太好.所以在centos7.7下安装 先更新一下系统 yum update 安装 yum工具, ... 
- kubernetes 1.17.2 kubeadm部署 证书修改为100年
			[root@hs-k8s-master01 ~]# cd /data/ [root@hs-k8s-master01 data]# ls docker [root@hs-k8s-master01 dat ... 
- 1.requests+正则表达式爬猫眼电影TOP100
			import requests from requests.exceptions import RequestException def get_one_page(url):try: response ... 
- isEqual判断相等性
			1.isEqual方法用来判断两个比较者的内存地址是否一样.为了细分,有isEqualToString.isEqualToNumber.isEuqalToValue等,使用时一定要精确使用,比如虽然N ... 
- PaperReading20200223
			CanChen ggchen@mail.ustc.edu.cn AdaBatch Motivation: Current stochastic gradient descend methods u ... 
- 博途V13 仿真S7-300PLC 与HMI 的以太网通讯。实现简单功能  HMI 型号是TP900
			本项目仅完成S7-300 PLC 型号为 315-2DP/PN HMI的型号是 智慧面板TP900 通过以太网进行连接.通过网络及连接 进行组态 PLC的程序 功能一 完成电动机的启动与停机 功能二 ... 
- _CrtIsValidHeapPointer(pUserData)
			程序遇到如题的运行时报错,参考下面这段文字,采取将自定义类的对象定义改为new方式生成后问题解决. !!Expression: _CrtIsValidHeapPointer(pUserData) vo ... 
- 伪奢侈品iPhone大降价,肉搏国产手机胜算几何?
			据国外媒体报道,苹果在中国降低iPhone价格的策略已收到明显的效果,自从1月11日正式调整价格以来,iPhone在苏宁电器平台上的销量飙升83%,而天猫上的销量也增长了76%,其中最受欢迎的机型是i ... 
- PHP 函数的作用
			函数是为了封装方法,方便调用. 设计一个计算的代码函数.举个栗子 <?php /** * Created by PhpStorm. * User: 炜文 * Date: 2017/2/15 * ... 
