(四舍五入) AT_abc001C風力観測

AT_abc001C 風力観測

一、题目描述

原题链接

给两个输入,一个是风向,一个是风力,要求以另一种表示形式输出它们。

二、算法分析

总体是一道模拟题,考察了浮点数的四舍五入。

以 5.23 为例,对小数点后第 2 位进行四舍五入,即保留小数点后 1 位。

  1. 将小数点后第 2 位加 5.
  2. 得 5.28
  3. 将小数点移到第 2 位之前的一位。
  4. 得 52.8
  5. 取整。(此处注意加上误差,四舍五入的误差限不超过最后一位的半个单位)
  6. 得 52
  7. 转换为小数。
  8. 得 52.0
  9. 小数点移回去。
  10. 得 5.2

三、代码及注释

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a;
double b;
double ad(double x,int p){                //对x的小数点后p位进行四舍五入(即保留小数点后p-1位)
    double eps=0.5*pow(10,p*(-1));        //四舍五入的误差限不超过最后一位的半个单位
    x+=5.0/pow(10,p);                     //先在小数点后第p位加上5
    double w=(int)(x*pow(10,p-1)+eps);    //然后把小数点移到第p位前一位
    double res=w;
    res=res/pow(10,p-1);
    return res;
}
int main(){
    
    cin>>a>>b;
    //计算风向,此时直接用题目给出的整数即可
    string s;
    if(a<=112) s="N";
    else if(a<=337) s="NNE";
    else if(a<=562) s="NE";
    else if(a<=787) s="ENE";
    else if(a<=1012) s="E";
    else if(a<=1237) s="ESE";
    else if(a<=1462) s="SE";
    else if(a<=1687) s="SSE";
    else if(a<=1912) s="S";
    else if(a<=2137) s="SSW";
    else if(a<=2362) s="SW";
    else if(a<=2587) s="WSW";
    else if(a<=2812) s="W";
    else if(a<=3037) s="WNW";
    else if(a<=3262) s="NW";
    else if(a<=3487) s="NNW";     
    else s="N";
    
    //计算风力
    double c=ad((b/60),2);         //题目输入的是每分钟的风程,要转化为每秒的,然后四舍五入
    int d=0;                       //风力等级
    if(c<=0.2) d=0,s="C";
    else if(c<=1.5) d=1;
    else if(c<=3.3) d=2;
    else if(c<=5.4) d=3;
    else if(c<=7.9) d=4;
    else if(c<=10.7) d=5;
    else if(c<=13.8) d=6;
    else if(c<=17.1) d=7;
    else if(c<=20.7) d=8;
    else if(c<=24.4) d=9;
    else if(c<=28.4) d=10;
    else if(c<=32.6) d=11;
    else d=12;
    
    cout<<s<<" "<<d<<endl;
    
    
    
    return 0; 
    
}
相关推荐
qeen873 分钟前
【算法笔记】前缀和经典题目解析
c语言·c++·笔记·学习·算法
Je1lyfish6 分钟前
Haskell 初探
开发语言·笔记·算法·rust·lisp·抽象代数
im_AMBER13 分钟前
Leetcode 159 无重复字符的最长子串 | 长度最小的子数组
javascript·数据结构·学习·算法·leetcode
浮芷.31 分钟前
微观搜打撤:基于鸿蒙flutter的内存快照算法的局内外状态隔离与高阶背包系统设计
算法·flutter·华为·开源·harmonyos·鸿蒙
郝学胜-神的一滴31 分钟前
[力扣 105]二叉树前中后序遍历精讲:原理、实现与二叉树还原
数据结构·c++·算法·leetcode·职场和发展
sheeta199835 分钟前
LeetCode 每日一题笔记 日期:2026.04.20 题目:2078.两栋颜色不同而距离最远的房子
笔记·算法·leetcode
闻缺陷则喜何志丹39 分钟前
【ST表 前缀和】P7809 [JRKSJ R2] 01 序列|普及+
c++·算法·前缀和·洛谷·st表
X journey43 分钟前
机器学习实践(18.5):特征工程补充
人工智能·算法·机器学习
LG.YDX1 小时前
笔试训练48天:mari和shiny(动态规划 - 线性dp)
数据结构·算法
m0_564876841 小时前
提示词应用
深度学习·学习·算法