PAT甲级-1108 Finding Average (20 分)
发布日期:2022-02-10 08:11:01 浏览次数:16 分类:技术文章

本文共 2920 字,大约阅读时间需要 9 分钟。

题目:
分析:模拟,判断是否为题目要求的合法序列。第一次好像是参考别人代码写的,第二次自己写的比较复杂

1、

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 99999999typedef long long ll;using namespace std;int n,m,k;int j(string s){ int len = s.size(); int flag = 1; for(int i = 0;i
2) { flag = 0; break; } } else if(isdigit(s[i]) == 0) { flag = 0;break; } if(t>=2) { flag = 0; break; } } if(flag == 0) return 0; double ans = stod(s); if(abs(ans)<=1000) return 1; return 0;}int main(){ cin>>n; double ans = 0; int num = 0; while(n--) { string s; cin>>s; if(j(s)) { ans += stod(s); num++; } else cout<<"ERROR: "<
<<" is not a legal number\n"; } if(num>=2) printf("The average of %d numbers is %0.2f",num,ans/num); else if(num == 1) printf("The average of 1 number is %0.2f",ans); else if(num == 0) printf("The average of 0 numbers is Undefined"); return 0;}

2、

#include 
#include
#include
#include
#include
using namespace std;int n,m,k;int main(){
cin>>n; int cnt = 0; double ans = 0; while(n--) {
string s;cin>>s; int len = s.size(); int d = -1;//小数点在数组中的位置 int flag = 0;//判断是否合法 for(int i = 0 ; i < len ;i++) {
if(s[i] == '.'){
d = i; break; } } if(d == -1)//没有小数点 {
for(int i = 0; i < len;i++) {
if(i == 0 && s[i]== '-')continue; if(s[i] < '0' || s[i] > '9'){
flag = 1; break; } } if(!flag && stod(s) >= -1000 && stod(s) <= 1000){
ans += stod(s); cnt++; } else printf("ERROR: %s is not a legal number\n",s.c_str()); } else//有小数点 {
for(int i = 0; i < d;i++) {
if(i == 0 && s[i]== '-')continue; if(s[i] < '0' || s[i] > '9'){
flag = 1; break; } } if(len - d - 1 > 2)//小数点位数 flag = 1; for(int i = d + 1; i < len ;i++) {
if(s[i] < '0' || s[i] > '9'){
flag = 1; break; } } if(!flag && stod(s) >= -1000 && stod(s) <= 1000){
ans += stod(s); cnt++; } else printf("ERROR: %s is not a legal number\n",s.c_str()); } } if(cnt == 1) printf("The average of %d number is %.2f",cnt,ans); else if(cnt == 0) printf("The average of 0 numbers is Undefined"); else printf("The average of %d numbers is %.2f",cnt,ans/cnt); return 0;}

转载地址:https://blog.csdn.net/qq_43567222/article/details/113846730 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【算法】并查集
下一篇:PAT甲级-1109 Group Photo (25 分)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月12日 10时56分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章