题目的主要信息:

  • 输入一个正的浮点数,对它进行四舍五入取整

方法一:比较判断法

具体做法:

我们首先利用y=x/1y = x / 1y=x/1得到xxx的整数部分,如果xxx与整数部分的差值小于0.5,我们就输出 整数部分即可,但是如果差值大于了0.5,我们需要输出整数部分加1。

#include<iostream>
#include<cmath>
using namespace std;

int main(){
    float x;
    cin >> x;
    int y = x / 1; //得到整数部分
    if(x - (float)y < 0.5) //判断小数部分与0.5的大小
        cout << y << endl; //四舍
    else
        cout << y + 1 << endl; //五入
    return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1)O(1),直接判断,常数之间
  • 空间复杂度:O(1)O(1)O(1),无额外空间

方法二:强制类型转换

具体做法:

利用C++自带的强制类型转化可以将float转换成int,但是默认是向下取整,因此我们要给数字加上0.5,因为如果它原本小数部分小于0.5,加上0.5向下取整也是四舍,但是如果它原本小数部分大于等于0.5,加上0.5以后向下取整就是五入了。

alt

#include<iostream>
using namespace std;

int main(){
    float x;
    cin >> x;
    cout << (int)(x+0.5) << endl; //强制类型转换
    return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1)O(1),直接转换,常数时间
  • 空间复杂度:O(1)O(1)O(1),无额外空间