求平均值

求平均值

1. 题目地址

    https://www.acwing.com/problem/content/1600/

2. 题目解析

    直接按照题意做即可。需要注意:try...catch的使用,size_t类型的使用,stof函数的使用。

3. 题解

    这里不再阐述

4. 代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;


//stoi -> 将字符串转换整数
//stof -> 将字符串转换成浮点数
//当stof将一个不是数字的字符串转换成浮点数时,就会报异常。此时,我们可以选择用try...catch来进行处理
int main(){
    int n;
    double sum = 0.0;
    int cnt = 0;
    scanf("%d",&n);
    while(n --){
        string number;
        //代表该数字是合法的
        bool flag = true;
        double result = 0.0;
        size_t bit;
        cin >> number;
        try{
            //代表转换时,用了字符串的多少位
            bit = 0;
            result = stof(number,&bit);
        }catch(...){            //...代表任意类型的异常
            //如果转换时,出现了异常,代表该数字不合法。
            flag = false;
        }
        //如果没全用完
        //代表:类似于123.abc这种情况,此时也是不合法的
        if(bit != number.size()){
            flag = false;
        }
        //不满足范围,此时不合法
        if(result < -1000 || result > 1000){
            flag = false;
        }
        //根据小数点位置,判断是否合法
        int k = number.find('.');
        if(k != -1 &&number.size() - k > 3){
            flag = false;
        }
        if(flag){
            sum += result;
            cnt++;
        }else{
            printf("ERROR: %s is not a legal number\n",number.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 1 number is %.2lf\n",sum);
    }else{
        printf("The average of 0 numbers is Undefined\n");
    }
    return 0;
}
posted @   夏目^_^  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示