题解 | #取近似值#

取近似值

http://www.nowcoder.com/practice/3ab09737afb645cc82c35d56a5ce802a

取近似值

题目:写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。

数据范围:保证输入的数字在 32 位浮点数范围内

输入描述:输入一个正浮点数值

输出描述:输出该数值的近似整数值

示例1:输入:5.5,输出:6

说明:0.5>=0.5,所以5.5需要向上取整为6

方法一:

思路分析: 本题要求为,当小数点后数值大于等于0.5,就向上取整,否则就向下取整。输入的要求为正浮点数值,因此设定为float,本题可以通过int只能表示整数,通过将int后的数字和int前的数字求差值,来判断数字是应该向上取整还是向下取整。

图解

alt

核心代码:

#include <stdio.h>
int main(){
    float n;//初始数值
    scanf("%f", &n);
    int m;
    m = n/1;//整数
    if((n - m) >= 0.5){
        printf("%d", m + 1);//向上取整
    }
    else{
        printf("%d", m);//向下取整
    }
    return 0;
}

时间复杂度:不需要循环执行,只需要一次判断,因此时间复杂度为O(1)O(1)

空间复杂度:不需要借助辅助数组,因此空间复杂度为O(1)O(1)

方法二: 思路分析: 本题相当于是将一个浮点型数字转换为整数数字,既然题目规定了大于0.5,向上取整,小于0.5,向下取整,那么就可以将该浮点型数字直接+0.5后,再使用int强制转换为整数即可得到最终结果。

图解:

alt

核心代码:

#include<stdio.h>

int main(void){
    double n;//双精度浮点型
    scanf("%lf",&n);
    printf("%d",(int)(n + 0.5));//强制输出
    return 0;
}

时间复杂度:不需要循环执行,因此时间复杂度为O(1)O(1)

空间复杂度:不需要借助辅助数组,因此空间复杂度为O(1)O(1)

全部评论

相关推荐

肖先生~:大一点得到公司面试更能学到点东西
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3136次浏览 43人参与
# HR最不可信的一句话是__ #
1021次浏览 32人参与
# 巨人网络春招 #
11484次浏览 224人参与
# 春招至今,你的战绩如何? #
14766次浏览 137人参与
# AI面会问哪些问题? #
893次浏览 22人参与
# 你的实习产出是真实的还是包装的? #
2704次浏览 52人参与
# MiniMax求职进展汇总 #
24900次浏览 321人参与
# 沪漂/北漂你觉得哪个更苦? #
1235次浏览 38人参与
# 你做过最难的笔试是哪家公司 #
1131次浏览 20人参与
# AI时代,哪个岗位还有“活路” #
2684次浏览 49人参与
# XX请雇我工作 #
51147次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7966次浏览 43人参与
# 简历第一个项目做什么 #
32073次浏览 357人参与
# 简历中的项目经历要怎么写? #
310908次浏览 4257人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152832次浏览 889人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187556次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64539次浏览 864人参与
# 如果重来一次你还会读研吗 #
229974次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178254次浏览 891人参与
# 你怎么看待AI面试 #
180654次浏览 1296人参与
# 正在春招的你,也参与了去年秋招吗? #
364172次浏览 2641人参与
# 腾讯音乐求职进展汇总 #
160822次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务