PAT甲级1108 Finding Average :[C++题解]stof、字符串变成浮点数、try和catch捕获异常、C++语法题
文章目录
- 题目分析
- 题目来源
题目分析
来源:acwing
分析:
C++中有函数stoi
表示把string 变成int,还有函数stof
,表示把string变成float。如果是合法数字的话,stof就将其变成数,不是合法数字的话,会抛出异常。
size_t idx; //这里是类型size_t,不是int
stof(s,&idx); //idx存的是用到字符串s中几个字符,如果全用到, 则是idx==s.size()
stof的英文释义如下:读者可以参阅。
float stof( const std::string& str, std::size_t* pos = 0 );
#功能
Function discards any whitespace characters (as determined by
std::isspace()) until first non-whitespace character is found.
Then it takes as many characters as possible
to form a valid floating-point representation
and converts them to a floating-point value.
#Parameters:两个参数
str - the string to convert
pos - address of an integer to store the number of characters processed
#Return value:返回值
The string converted to the specified floating point type.#Exceptions:抛出异常
std::invalid_argument if no conversion could be performedstd::out_of_range if the converted value would fall out of the range of the result type or if the underlying function (strtof, strtod or strtold) sets errno to ERANGE.
所以需要用try{}和catch{}
来捕获异常。
判断字符串是否是浮点数的写法
//3.13abc这样的数也会转成double,不过存的是3.13,用到的字符个数idx =4,后面的abc会被抛弃。所以x =3.13.
double x;bool success = true; try{size_t idx; //用了几个字符x =stof(s,&idx); if(idx < s.size()) success = false;}//任何类型的异常:用...表示//如果有异常,就执行下面的语句catch(...){success = false;}
AC代码
#include<bits/stdc++.h>
using namespace std;const int N =1010;int main(){int n;cin >>n ;int cnt = 0;double sum = 0;while(n--){string s;cin >> s;double x;bool success = true;try{size_t idx; //用了几个字符x =stof(s,&idx);if(idx < s.size()) success = false;}//任何类型的异常:用...表示//如果有异常,就执行下面的语句catch(...){success = false;}if( x< -1000 || x > 1000) success =false;int k = s.find(".");//不是两位小数if(k!= -1 && s.size()-1-k>2) success = false;if(success) cnt++, sum += x;else printf("ERROR: %s is not a legal number\n",s.c_str());}if(cnt>1) printf("The average of %d numbers is %.2lf\n",cnt, sum/cnt);else if(cnt == 1) printf("The average of %d number is %.2lf\n",cnt, sum);else cout<<"The average of 0 numbers is Undefined";
}
题目来源
PAT甲级1108 Finding Average
PAT甲级1108 Finding Average :[C++题解]stof、字符串变成浮点数、try和catch捕获异常、C++语法题相关推荐
- PAT 甲级 1108 Finding Average (20 分)
思路: 1.不是数字的位置只能在第一个且为负号,或者在字符串的倒数第一.二.三位置.或者不存在: 2.上面的方法也可以用sscanf或者sprintf进行判定: 3.数字要在规定区间内: 4.按.2f ...
- PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数
文章目录 题目分析 题目链接 题目分析 来源:acwing 本题的分析见另一道PAT的题目:PAT甲级1078 Hashing:[C++题解]哈希表.哈希表开放寻址法.二次探测法链接的题目就是让建立h ...
- PAT甲级1029 Median:[C++题解]贪心、二路归并
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 如果直接排序,时间复杂度是O(nlogn),n=2∗105O(nlogn),\ n=2*10^5O(nlogn), n=2∗105会 ...
- PAT甲级1070 Mooncake:[C++题解]贪心
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 对单件从高到低排序. 需要注意的是总需要量d设成double,不要设成int. ac代码 #include<bits/stdc ...
- PAT甲级1008 Elevator:[C++题解]模拟
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:统计上升次数.下降次数:停留次数就是n.然后算数即可. ac代码 #include<bits/stdc++.h> usin ...
- PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...
- PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...
- PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数
文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...
- PAT甲级1032 Sharing :[C++题解]链表
文章目录 题目分析 题目链接 题目分析 思路:建立链表,这里使用数组.e [ ] 表示当前的数值,ne[ ]表示next指针. 求单词的公共后缀,就是求两个链表从头结点开始第一个公共的结点. 先遍历第 ...
最新文章
- 今天浏览新闻的时候,发现一张图片特别有感触
- Navicat连接Oracle数据库以及Oracle library is not loaded的解决方法
- 【四重优化,速看】剑指 Offer 13. 机器人的运动范围
- vim的简单使用及配置
- HDU2043 密码【密码】
- 代码之美~利用构造方法实现模块的解耦
- 数据可视化软件有什么特点
- 苹果电脑取色器怎么用?Mac取色器——为你的设计提提速
- 常见通信RF指标的内在和意义
- 纸鸢|物联网云平台小工具集合常见 MQTT 客户端比较
- 抽奖软件NABCD分析
- Codeforces-936B Sleepy Game
- QPython 3C 操作 压缩包
- 还在为阅读量苦恼么?文章提升10倍曝光的写作技巧
- python定义一个人类_Python类和人类
- NOJ 1116 哈罗哈的大披萨 【淡蓝】 状态压缩DP
- 中国城市码cityCode映射
- 如何改变图片的大小kb
- Simulink---Extrinsic函数绘图
- 微软裁员方式曝光:鼓励自愿退休 减少合同工
热门文章
- android加载html
- 哪位有方法把 dd/mm/yyyy的字符串 格式化成yyyy-mm-dd
- C++标准:C++不允许修改任何基本型别(包括指针)的暂时值
- python列表get方法_python的get set方法示例
- 双层lstm每层有自己的权重参数吗_一幅图真正理解LSTM的物理结构
- 基于mqtt协议的消息推送服务器,基于 MQTT 协议的推送服务
- j3455跑mysql_自用NAS升级折腾小记+J3455开硬件直通
- 研究生的早期科研之路
- 2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授
- Buffer Status Report(BSR)