下午考試遇到一道題,說編寫一個程序,輸入某地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");
}