厘米换算英尺英寸

厘米换算英尺英寸(15 分)

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6

 1 #include<stdio.h>
 2 
 3 int main(void)
 4 {
 5     int cm;
 6     int foot, inch;
 7 
 8     scanf("%d", &cm);
 9     foot = (int)(cm / 30.48);
10     inch = (int)(((cm / 30.48)-(int)(cm/30.48))*12);
11 
12     printf("%d %d\n", foot, inch);
13 
14     return 0;
15 
16 }

不会截断,取小数部分,用了一个笨方法,用数减去此数取整,剩下的就是小数部分。

查询,大部分人用的都是上面的方法。

另外还有几种别致一点的方法:

1.判断此数是否小于1,不小于1,一直减1,然后得出小数部分。(针对正数)

2.如果知道小数位数n,那么先乘10的n次方,然后除10的n次方取余。

3.modf函数

头文件:#include <stdio.h>
modf() 将浮点数分解为整数和小数部分,其原型为:
    double modf (double x, double* intpart);
【参数】x 为带分解双精度浮点数,intpart 为用来保存整数部分的指针。
【返回值】返回分解后的小数部分。


设返回值为 ret,则 x = intpart + ret
 ret 和 intpart 拥有与 x 一样的正负号。

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int main ()
 5 {
 6     double param, fractpart, intpart;
 7 
 8     param = 3.14159265;
 9     fractpart = modf (param , &intpart);
10     printf ("%f = %f + %f \n", param, intpart, fractpart);
11     return 0;
12 }

输出结果:
3.141593 = 3.000000 + 0.141593

将第 8 行代码的 param 的值改为 -3.14159265,则输出结果为:
-3.141593 = -3.000000 + -0.141593

posted @ 2018-02-16 22:48  左揽雀尾007  阅读(819)  评论(0编辑  收藏  举报