杭电acm 1038题

本题比较简单,但是需要掌握几个小技巧,先上代码

 1 /*************************************
 2 杭电ACM 1038题,已AC
 3 
 4 **************************************/
 5 
 6 #include "iostream"
 7 
 8 using namespace std;
 9 
10 int main(void)
11 {
12     float p=3.1415927;
13     float diameter;
14     float temp;
15     int revolutions;
16     int mark=1;
17     float time;
18     float result[2];
19     cin>>diameter>>revolutions>>time;
20     while(revolutions)
21     {
22         temp=p*diameter*((float)revolutions);
23         //cout<<temp<<endl;
24         result[0]=(temp/12.0)/5280;
25         //cout<<result[0]<<endl;
26         result[0]=((int)(result[0]*100.0+0.5))/100.00;//技巧,四舍五入
27         result[1]=(temp*3600.0/time)/63360;
28         result[1]=((int)(result[1]*100.0+0.5))/100.00;
29         cout<<"Trip #"<<mark++<<": ";
30         printf("%.2f %.2f\n",result[0],result[1]);//注意表达式,这中表达是保留两位有效数字
31         cin>>diameter>>revolutions>>time;
32     }
33     return 0;
34 }

第26行代码是实现保留两位有效数字的四舍五入的技巧,例如想要3.14659,四舍五入取小数点后2位,可以将3.14659*100,得到314.659,然后再加上0.5,得到315.159,然后再取整(强制转化为int),得到315,然后再除以100.00(这里是100.00),注意,是取整后除以100,前面整个取整过程必须括号,开始没有打括号,导致程序输出结果出错。最后得到结果3.15.

 

输出结果时,%.2表示输出两位有效数字,这个也要注意下...

转载于:https://www.cnblogs.com/kb342/p/3664748.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值