华为机试每日一练--第八题: 取近似值

简介: 华为机试每日一练--第八题: 取近似值

练习题入口

问题描述

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

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

输入描述:

输入一个正浮点数值

输出描述:

输出该数值的近似整数值

解题分析

本题涉及到一个知识点,当一个浮点型数据赋值给整型数据时,只能把整数部分赋值给整型数据。

如:flaot a=3.15;  int b = a;   这时b = 3

所以我们判断小数点部分后的数就好判断了,直接用if语句判断(a-b)是否大于0.5,大于就打印(b+1),小于就打印(b)。


但是上述转化成代码的话,就显得太冗余了,毕竟这么简单的题目没必要这这么行。


接下来我给大家介绍两个简单方法


1、直接打印(a+0.5)


因为当小数大于0.5时,整数就+1、小于0.5时,就舍去小数。我们可以直接把浮点数a加上0.5,

再转转化成整型。这样就筛选大于0.5的小数

printf("%d", (int)(a + 0.5));

2、round库函数

round()函数math标头的库函数,用于对最接近该数字的给定值进行四舍五入,一半的情况下舍入为零,它接受一个数字并返回四舍五入的值。

printf("%.0f\n", round(a));

代码实现

#include<stdio.h>
#include<math.h>
int main()
{
  float num;
  scanf("%f", &num);
  printf("%d", (int)(num + 0.5));
    printf("%.0f\n", round(num));
  return 0;
相关文章
|
机器学习/深度学习 数据处理
|
7月前
|
存储 算法 数据挖掘
LeetCode第十六题: 掌握双指针技巧 最接近的三数之和 【python】
LeetCode第十六题: 掌握双指针技巧 最接近的三数之和 【python】
|
机器学习/深度学习
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
|
Serverless 测试技术
华为机试每日一练--第五题: 进制转换
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤2^31−1
华为机试每日一练--第五题: 进制转换
|
安全
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
|
存储
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第九题: 字符串反转
华为机试每日一练--第十二题: 查找组成一个偶数最接近的两个素数
华为机试每日一练--第十二题: 查找组成一个偶数最接近的两个素数
华为机试每日一练--第十二题: 查找组成一个偶数最接近的两个素数
华为机试每日一练--第十题: 句子逆序
华为机试每日一练--第十题: 句子逆序
华为机试每日一练--第十题: 句子逆序
|
存储 算法
算法题每日一练---第12天:算式900
小明的作业本上有道思考题: 看下面的算式: (□□□□-□□□□)*□□=900
140 0
算法题每日一练---第12天:算式900
|
人工智能 算法
[leetcode/lintcode 题解] 算法面试真题详解:浮点数组合和
[leetcode/lintcode 题解] 算法面试真题详解:浮点数组合和
[leetcode/lintcode 题解] 算法面试真题详解:浮点数组合和