PAT (Basic Level) Practice (中文)1054 求平均值 (20 分) 凌宸1642
PAT (Basic Level) Practice (中文)1054 求平均值 (20 分)
题目描述
本题的基本要求非常简单:给定 N 个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是 [−1000,1000] 区间内的实数,并且最多精确到小数点后 2 位。当你计算平均值的时候,不能把那些非法的数据算在内。
输入格式
输入第一行给出正整数 N(≤100)。随后一行给出 N 个实数,数字间以一个空格分隔。
输出格式
对每个非法输入,在一行中输出 ERROR: X is not a legal number,其中 X 是输入。最后在一行中输出结果:The average of K numbers is Y,其中 K 是合法输入的个数,Y 是它们的平均值,精确到小数点后 2 位。如果平均值无法计算,则用 Undefined 替换 Y。如果 K 为 1,则输出 The average of 1 number is Y。
输入样例1
7
5 -3.2 aaa 9999 2.3.4 7.123 2.35
输出样例1
ERROR: aaa is not a legal number
ERROR: 9999 is not a legal number
ERROR: 2.3.4 is not a legal number
ERROR: 7.123 is not a legal number
The average of 3 numbers is 1.38
输入样例2
2
aaa -9999
输出样例2
ERROR: aaa is not a legal number
ERROR: -9999 is not a legal number
The average of 0 numbers is Undefined
题目要求
作者 CHEN, Yue
单位 浙江大学
代码长度限制 16 KB
时间限制 200 ms
内存限制 64 MB
解题思路
// 本题的难点在于如何判断输入的数字的合法性。
// 参考了一个大佬的代码,以及阅读网上的题解得到如下最简洁的办法
利用 sscanf() 和 sprintf() 两个函数。
sscanf( str,"%lf",&n );把字符数组 str 中的内容以 %lf 的格式 写到 n 中,从左至右 。
其写入时,非数值类型的字符,不会写入到 n 中
例如 sscanf( "7a" , "%lf" , &temp) ,则 temp 中储存的是数字 7 .
sprintf( str,"%.2f",n ); 把 n 中的内容以 %.2f 的格式写到字符数组 str 中,从右至左 。
无奈的坑点
坑点 1 就是 数组开大一点!
本来呢,以为题目中规定的数据在 [-1000 , 1000] 之间 数据不会太大。但是我开 20 大小的数组竟然越界!!!
坑点 2 ,也是我觉得最无语的,当数组大小满足要求了,竟然有 测试点 3 显示答案错误
原因竟然是 当只有 1 个合法的数字的时候, numbers 不能加 s !!!!!!
完整代码
#include<bits/stdc++.h>
using namespace std ;
char str[50],str2[50] ;
int main(){
int n , cnt = 0 ;
cin >> n;
double temp = 0.0 , sum = 0.0 ;
for(int i = 0 ; i < n ; i ++){
scanf("%s" , str);
sscanf(str , "%lf" , &temp) ;
sprintf(str2 , "%.2f" , temp) ;
int flag = 0 ;
for(int j = 0 ; j < strlen(str) ; j ++){
if(str[j] != str2[j]){
flag = 1 ;
break ;
}
}
if(flag || temp < -1000 || temp > 1000){
printf("ERROR: %s is not a legal number\n" , str) ;
continue ;
}else{
sum += temp ;
cnt ++ ;
}
}
if(cnt == 1)
printf("The average of 1 number is %.2f\n" , sum) ;
else if(cnt > 1)
printf("The average of %d numbers is %.2f\n" , cnt , sum / cnt) ;
else
printf("The average of 0 numbers is Undefined\n") ;
return 0 ;
}
其他博客
PAT (Basic Level) Practice (中文)1054 求平均值 (20 分) 凌宸1642的更多相关文章
- PAT (Advanced Level) Practice 1027 Colors in Mars (20 分) 凌宸1642
PAT (Advanced Level) Practice 1027 Colors in Mars (20 分) 凌宸1642 题目描述: People in Mars represent the c ...
- PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) 凌宸1642
PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) 凌宸1642 题目描述: A number that will ...
- PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) 凌宸1642
PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) 凌宸1642 题目描述: With the 2010 FIFA World Cu ...
- PAT (Advanced Level) Practice 1005 Spell It Right (20 分) 凌宸1642
PAT (Advanced Level) Practice 1005 Spell It Right (20 分) 凌宸1642 题目描述: Given a non-negative integer N ...
- PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642
PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642 题目描述: Calculate a+b and output the sum i ...
- PAT (Basic Level) Practice (中文)1078 字符串压缩与解压 (20 分) 凌宸1642
PAT (Basic Level) Practice (中文)1078 字符串压缩与解压 (20 分) 凌宸1642 题目描述: 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一 ...
- PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642 题目描述: 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每 ...
- PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642
PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642 题目描述: The task is really simple: ...
- PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642
PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642 题目描述: A reversible prime in any n ...
随机推荐
- HTML5 Template in Action
HTML5 Template in Action https://developer.mozilla.org/es/docs/Web/HTML/Elemento/template https://de ...
- macOS 屏幕共享, 远程协助
macOS 屏幕共享, 远程协助 Screen Sharing App 隐藏 app bug command + space 搜索 https://macflow.net/p/397.html Tea ...
- 用WPF写了个处理视频,音频,图片的工具
处理工具依赖ffmpeg,感兴趣可以看下Github上的源码 下载地址也在Github上
- BGV再度爆发,流通市值破500万美金!
BGV似乎以超乎寻常的姿态,开启了爆发的模式.这两天,BGV一路上涨,日内最高涨至548.78美金,24小时成交额达到了98.07万美金,24小时成交量达到1844.93枚BGV,流通市值更是突破了5 ...
- 2020 NGK 全球启动大会于美国硅谷圆满落幕
据NCC报道美国西海岸时间11月25日,NGK全球启动大会在美国加利福尼亚北部的硅谷会展中心成功举办.本次大会吸引了来自世界各地的企业家.创业者.开发者,以及投资人达一万人次齐聚硅谷. NGK创始人. ...
- 死磕Spring之IoC篇 - 调试环境的搭建
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- hadoop的lzo支持
目录 1.下载相关文件: 2.Configure LZO to build a shared library (required) and use a package-specific prefix ...
- idea配置阿里maven镜像
首先打开IDEA安装路径下的:"\plugins\maven\lib\maven3\conf\settings.xml" 找到里面的mirror配置,进行修改如下: <mir ...
- ElasticSearch URI 查询
公号:码农充电站pro 主页:https://codeshellme.github.io 1,URI 查询格式 URI 查询的一般格式如下: GET /index_name/_search?q=key ...
- oracle之用户
命令都是在命令行窗口执行 创建用户 1)登陆管理员用户 sqlplus system/密码 sqlplus system/briup 注意不要以分号结尾 2)创建用户 create user 用户名 ...