1054 求平均值(PAT乙级 C++)

题目

本题的基本要求非常简单:给定 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

分析

  • 本体重点在找出非法输入,非法输入包含以下:
  • 非数字:aaa,a123,23a,_as3等
  • 多个小数点或者负号:-2-3,2.3.4
  • 小数位数多:1.231,3.3331等
  • 数值范围:<-1000(如-1001),>1000(如1001)。
  • 还需要注意,有1个合法输入时,输出"The average of 1 number is Y",Y 是它们的平均值。

AC代码

#include <iostream>
#include<iomanip>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{string s,ans="";int i,j,n,k=0,len,flag1=0,flag2=0,flag3=0;double sum=0.0;cin>>n;for(i=0; i<n; i++){cin>>s;len=s.length();for(j=0; j<len; j++){if(s[j]=='-'){ans+="-";flag1++;}else if(s[j]=='.'){ans+=".";flag2++;}else if(flag2==0&&s[j]>='0'&&s[j]<='9'){ans+=s[j];}else if(flag2>0&&s[j]>='0'&&s[j]<='9'){flag3++;}else{flag1=2;break;}}float t;try{size_t length;t =stof(s,&length);}catch(...){}if(flag1>1||flag2>1||flag3>2||t<-1000||t>1000){cout<<"ERROR: "<<s<<" is not a legal number"<<endl;flag1=0;flag2=0;flag3=0;continue;}flag1=0;flag2=0;flag3=0;k++;sum+=t;}if(k==0)cout<<"The average of 0 numbers is Undefined";else if(k==1)cout<<"The average of "<<k<<" number is "<<fixed<<setprecision(2)<<sum/k;elsecout<<"The average of "<<k<<" numbers is "<<fixed<<setprecision(2)<<sum/k;return 0;
}

更多题解
PAT 乙级(Basic Level) 题解汇总(持续更新)(C++坑点分析)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu16.04下安装ibus拼音

按照网上给的安装方法&#xff0c;没成功&#xff0c;在切换ibus的时候总是报错&#xff0c;记录下解决办法。 安装语言包 System Settings–>Language Support–>Install/Remove Languages 选中chinese&#xff0c;点击Apply应用即可&#xff0c;等待下载安装完成。 …

1057 数零壹(PAT乙级 C++实现)

题目 给定一串长度不超过 10​5 的字符串&#xff0c;本题要求你将其中所有英文字母的序号&#xff08;字母 a-z 对应序号 1-26&#xff0c;不分大小写&#xff09;相加&#xff0c;得到整数 N&#xff0c;然后再分析一下 N 的二进制表示中有多少 0、多少 1。例如给定字符串 P…

解决Ubuntu中sublime无法输入中文的问题

主要目的&#xff1a; 安装 Sublime Text 3 安装 Fcitx 输入法 皮肤 修复 Sublime Text 3 在 Ubuntu(Debian) 系统下的无法输入中文(CJK 字符)输入法的问题 注意&#xff1a; 这个修复仅当在终端中使用 subl . 调用 Sublime Text 的时有效, 具体原因请看源代码src/s…

java编程访问hdfs_以编程方式访问Java基本类型的大小

java编程访问hdfs许多不熟悉Java的开发人员首先要了解的一件事是Java的基本原始数据类型 &#xff0c;其固定&#xff08;与平台无关&#xff09;的大小&#xff08;以位或字节为单位用二进制补码表示 &#xff09;以及它们的范围&#xff08;Java中所有数字类型都是带符号的&a…

1059 C语言竞赛(PAT乙级 C++)

题目 C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩&#xff0c;颁奖规则也就制定得很滑稽&#xff1a; 0、冠军将赢得一份“神秘大奖”&#xff08;比如很巨大的一本学生研究论文集……&#xff09;。1、排名为素数的学生将赢得最好的奖品 —…

【Ubuntu】Ubuntu16.04安装 搜狗输入法 史上最详细

一、基本配置 开发环境&#xff1a;ubuntu16.04 二、准备工作 下载 搜狗输入法linux版 搜狗输入法官网Linux版 我这里是64位的&#xff0c;所以选择64位 1、拷贝搜狗输入法到ubuntu cp /media/sf_share/6q/sogoupinyin_2.3.1.0112_amd64.deb . 2、安装搜狗输入法 首次安装会报…

Spring Boot和Hibernate:打印查询和变量

办公室已经很晚了&#xff0c;您陷入了这个带有JoinColumns和层叠的奇怪的Jpa代码中&#xff0c;而您找不到错误所在。 您希望有一种方法可以查看打印的查询以及值。 稍微调整一下Spring Boot应用程序就可以实现。 借助lombock&#xff0c;这是我们的jpa模型。 package com.g…

解决SSH登录无响应timed out问题

输入 ssh usernamexx.xx.xx.xx光标一直闪烁&#xff0c;直到提示连接超时timed out。 这是因为服务器端的防火墙禁用了ssh服务的端口&#xff0c;默认为22. 有两种解决方法&#xff1a; 1&#xff09;直接禁用防火墙 2&#xff09;只开启22号端口 以Ubuntu为例&#xff1a; 1&…

restful json_Dropwizard:轻松的RESTful JSON HTTP Web服务

restful json寻求快速&#xff0c; 轻松地创建可用于生产环境的RESTful JSON HTTP Web服务的Java开发人员应考虑使用Dropwizard框架。 Dropwizard汇集了相互补充的广受好评的库&#xff0c;因此您可以了解重要的内容&#xff1a;编写和交付工作代码。 对于那些对所用库的详细信…

1061 判断题(PAT乙级 C++)

题目 判断题的评判很简单&#xff0c;本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。 输入格式&#xff1a; 输入在第一行给出两个不超过 100 的正整数 N 和 M&#xff0c;分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数&#xff0c;是…

gem for onenote安装教程

https://www.xiazaiba.com/jiaocheng/52255.html

使用Java :: Geci生成setter和getter

在本文中 &#xff0c;我们创建了非常简单的hello-world生成器&#xff0c;以介绍框架以及通常如何生成生成器。 在本文中&#xff0c;我们将研究访问器生成器&#xff0c;它是在Java :: Geci的核心模块中定义的&#xff0c;它是商业级的&#xff0c;而不是仅用于演示的生成器。…

1062 最简分数(PAT乙级 C++)

题目 一个分数一般写成两个整数相除的形式&#xff1a;N/M&#xff0c;其中 M 不为0。最简分数是指分子和分母没有公约数的分数表示形式。 现给定两个不相等的正分数 N1/M​1​​ 和 N​2/M​2​​ &#xff0c;要求你按从小到大的顺序列出它们之间分母为 K 的最简分数。 输…

使用xshell上传本地文件到服务器

1.查看linux上是否安装rz工具 2&#xff0c;查看安装是否完成&#xff0c;然后上传文件到服务器

ubuntu镜像下载

官方下载地址&#xff08;不推荐&#xff09; https://www.ubuntu.com/download 推荐使用 Ubuntu 20.04.4 LTS (Focal Fossa) 其余下载地址 中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 阿里云开源镜像站 http://mirrors.aliyun.com/ubuntu-releases/…

Dev-C++ 一直提示源文件未编译,原因及解决办法

原因 编译命令换行&#xff08;可能有的同学和我一样喜欢换行写&#xff09;&#xff0c;导致编译通不过&#xff0c;如果选择编译运行&#xff0c;便会提示"源文件未编译"。 如图 解决办法 这种写法不对&#xff0c;正确如下&#xff08;两个命令间有一个空格&…

ubuntu 下安装qemu

&#xff08;1&#xff09;安装qemu 仿真ARM需要使用qemu-system-arm&#xff0c;安装模拟器 sudo apt-get install qemu-kvm qemu-kvm-extras &#xff08;2&#xff09;下载内核镜像。以下名称叫ubuntu.iso &#xff08;3&#xff09;创建一个虚拟磁盘 sudo qemu-im…

python 怎么查看变量的数据类型

方法 type(variable_name)示例 a hello b type(a) print(b)a 10 b type(a) print(b)结果 <class str> <class int>

Valhalla项目:LW2内联类型的初步了解

我总结了最近在Valhalla LW2 项目 “ 内联类型 ”中取得的一些进展&#xff0c;这些进展最近在我的博客文章“ Valhalla LW2进度-内联类型 ”中公开了。 在这篇文章中&#xff0c;我通过针对最近发布的Valhalla Early Access Build jdk-14-valhalla 1-8&#xff08;2019/7/4&a…

QCOW2镜像格式

QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don’t support sparse files, optional AES encryption, and optional zlib compression 现在比较主流的一种虚拟化镜…