c语⾔取整⽅法和四舍五⼊和%d和%04d和%-4d有什么区别
c语⾔取整⽅法
(1)使⽤int强制转换
使⽤int强制转换的结果就是去掉⼩数部分。
int a;
a=int(1.2);//a=1
a=int(-1.2);//a=-1
(2)使⽤floor函数向下取整
使⽤floor函数的结果是向下取整,即得到⽐该数⼩的最⼤整数,需要包含头⽂件math.h
in a;
a=floor(1.2);//a=1
a=floor(-1.2);//a=-2
(3)使⽤ceil函数向上取整
使⽤ceil函数的结果是向上取整,即得到⽐该数⼤的最⼩整数,需要包含头⽂件math.h
int a;
a=ceil(1.2);//a=2
a=ceil(-1.2);//a=-1
(4)其它
若需要向最邻近整数取整,可采⽤下列⽅法:
float b=1.2;
int a;
b=b>=0? b+0.5:b-0.5;
a=int(b);
round(x)返回x的四舍五⼊整数值。
使⽤形式做法返回
强制转换 (数据类型)x去⼩数部分 整数
函数 floor(x) ⼩于等于 p的最⼤整数 整数
ceil(x) ⼤于p的最⼩整数 浮点数double
rint(x) 四舍五⼊,(±)0.5时往绝对值⼩的⽅向 浮点数double
round(x) 四舍五⼊,(±)0.5时往绝对值⼩的⽅向 整数
C中 %d 和 %04d 和%-4d有什么区别?
%d左对齐,输出变量的所有数字;
%4d右对齐,宽度为4,左边填充空格,
当变量的实际宽度⼤于4时,输出变量的所有数字;
%04d与%4d的唯⼀区别就是左边填充0。
%-4d意思是数字占四位、左对齐。
```c
⽐如,
1.以%d,%4d,%04d,输出12时,结果是:
12
两个空格12
0012
2.以%d,%4d,%04d,输出123时,结果是:
123
⼀个空格123
0123
3.以%d,%4d,%04d,输出1234时,结果是:
1234
1234
1234
4.以%d,%4d,%04d,输出12345时,结果是:
12345
12345
12345
**C语⾔实现四舍五⼊**
**(int)(a+0.5)即可**。
c语言和c++区别很巧妙的⽤了取整规则。
也不⽤导⼊math.h
同样注意负数的情况。
把+换成-即可。
float f = …..;
int i =(int)(f +0.5);
i就是f四舍五⼊的结果。
今天我要介绍在C语⾔中实现数据四舍五⼊的算法。
我们知道,C语⾔中去除⼩数位采⽤的⽅法就是强制性转化成整型类型。那么假如我们要对⼀个⼩数保留三个⼩数位⽽第四个⼩数位按照四舍五⼊的规则进⾏,该怎样实现呢?很简单,我们将数字扩⼤1000倍,使得第四位⼩数称为新数字的第⼀位,然后我们可以给它加上0.5后再进⾏强制性转化。加0.
5的原因就是:假如这个⼩数位的数值⼤于5,加上0.5能够实现进位的作⽤,倘若⼩于0.5,就没有实现进位的作⽤。如此,就能实现⼩数位的四舍五⼊。然后我们再对这个数值
进⾏强制性转化,然后再处以1000.0(记住,⼀定要1000.0,否则就会出现隐式转化),在输出的时候⽤%0.3f以实现保留三位⼩数。
```c
# include<stdio.h>
int main(void){
float a;
scanf("%f",&a);
a =(int)(a*1000+0.5)/1000.0;
printf("%0.3f", a);
return0;
}
```c
有⼀个round函数可以直接调⽤,
round(x)
参数时double型,返回⼩数对整数部分的四舍五⼊值
⽐如round(3.623);返回4
C语⾔中保留两位⼩数:⼩技巧
①
float a =3.456;//保留到⼩数点后两位
float b =(int)((a *100)+0.5)/100.0;
输出结果为3.46
精度⽐较⾼
②
float a =23.456789;
printf(“%.2f”,a);//输出为23.45
```c
#include"stdio.h"
#include"math.h"
void main()
{
float x;
scanf("%f",&x);
int y =round(x);
printf("%d",y);
}
1086 就不告诉你 (15 分)
做作业的时候,邻座的⼩盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五⼗三。”本题就要求你,对任何⼀对给定的正整数,倒着输出它们的乘积。
输⼊格式:
输⼊在第⼀⾏给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。
输出格式:
在⼀⾏中倒着输出 A 和 B 的乘积。
输⼊样例:
57
结尾⽆空⾏
输出样例:
53
结尾⽆空⾏
#include<stdio.h>
#include<math.h>
int main()
{
int c,s=0,m,n,a,b; scanf("%d %d",&m,&n); c=m*n;
if(c==0) s=0;
else
{
while(c!=0)
{
b=c%10;
c=c/10;
s=10*s+b;
}
}
printf("%d",s);
}
取number的个位数字number/1%10;
取number的⼗位数字number/10%10;
取number的百位数字number/100%10;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论