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

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

练习题入口

问题描述

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 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月前
牛客刷题之数学基础-快速幂
牛客刷题之数学基础-快速幂
39 0
|
1月前
|
C语言
c语言编程练习题:7-57 求e的近似值
c语言编程练习题:7-57 求e的近似值
35 0
|
7月前
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
30 0
|
11月前
|
机器学习/深度学习 Java
每日一练之斐波那契的实现
每日一练之斐波那契的实现
66 0
数论整理之特殊数one:斐波那契数列
数论整理之特殊数one:斐波那契数列
|
算法 C语言 C++
【C语言蓝桥杯每日一题】—— 既约分数
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 既约分数~ 都是精华内容,可不要错过哟!!!😍😍😍
73 0
|
机器学习/深度学习
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第六题: 蛇形矩阵
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
|
Serverless 测试技术
华为机试每日一练--第五题: 进制转换
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤2^31−1
华为机试每日一练--第五题: 进制转换
华为机试每日一练--第十题: 句子逆序
华为机试每日一练--第十题: 句子逆序
华为机试每日一练--第十题: 句子逆序