当前位置:编程学习 > C/C++ >>

另c++实现四舍五入

下午考试遇到一道题,说编写一个程序,输入某地12个月的降水量,计算每个月降水量占全年降水量的比例,
并且要求输出样式如图:

\

其中,比例值要四舍五入,本来很早就能考完了,但是四舍五入的方法我想了好久才弄出来,悲剧啦.
代码如 #include<iostream>
using namespace std;
#include<iomanip>

int fun(double s);

int main()
{
     double a[12];
     double sum=0;
     double b[12];
     cout<<"please input the rainfall of the 12 months: ";
     for(int i=0;i<12;i++)
     {
         cin>>a[i];
         sum+=a[i];
     }
     for(int j=0;j<12;j++)
     {
         b[j]=(a[j]/sum);
     }
     for(int m=0;m<12;m++)
     {
         cout<<setw(2)<<m+1<<"<"<<setw(2)<<fun(b[m])<<"%) ";
         for(int k=0;k<fun(b[m]);k++)
             cout<<"#";
         cout<<endl;

     }
     system("pause");
}

int fun(double s)//四舍五入函数
{   
    if (s*100>int(s*100+0.5))
        return int(s*100);
    else
        return int(s*100)+1;

}调用了一个四舍五入的函数.
...
....
回来同学说可以更简单得解决,恍然大悟呀..直接强制转换了......... #include<iostream>
using namespace std;
#include<iomanip>

int main()
{
     double a[12];
     double sum=0;
     int  b[12];
     cout<<"please input the rainfall of the 12 months: ";
     for(int i=0;i<12;i++)
     {
         cin>>a[i];
         sum+=a[i];
     }
     for(int j=0;j<12;j++)
     {
         b[j]=int((a[j]/sum)*100+0.5);
     }
     for(int m=0;m<12;m++)
     {
         cout<<setw(2)<<m+1<<"<"<<setw(2)<<b[m]<<"%) ";
         for(int k=0;k<b[m];k++)
             cout<<"#";
         cout<<endl;

     }
     system("pause");
}

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,