题目描述
编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过 40 个小时,那么他 / 她的总收入等于工作时间乘以每小时的薪水。如果员工工作的时间在 40 到 50 个小时之间,那么对于前 40 个小时,仍按常规方法计算;而对于剩余的超额部分,每小时的薪水按 1.5 倍计算。如果员工工作的时间超过了 50 个小时,那么对于前 40 个小时,仍按常规方法计算;对于 40~50 个小时之间的部分,每小时的薪水按 1.5 倍计算;而对于超出 50 个小时的部分,每小时的薪水按 2 倍计算。请编写一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他 / 她应该得到的周薪。
输入格式
输入数据有多组,每组数据只有一行,包括一个整数和一个实数,分别表示工作时间和每小时薪水。
输出格式
对于每组数据,输出只有一个实数,表示周薪,保留小数点后 2 位。
代码
#include <iostream>
#include <iomanip> //设置小数精度
using namespace std;
int main( )
{
int hour;
float hour_salary,week_salary;
while(cin>>hour>>hour_salary) //题目要求可以计算很多组数据
{
if(hour<=40)
week_salary=hour_salary*hour;
if(hour>40&&hour<=50)
week_salary=hour_salary*40+hour_salary*1.5*(hour-40);
if(hour>50)
week_salary=hour_salary*40+hour_salary*1.5*10+hour_salary*2*(hour-50);
cout<<fixed<<setprecision(2)<<week_salary; //设置小数精度
cout<<endl;
}
return 0;
}
// < iomanip >作用
1.设置字段宽度 setw(int n)
例:cout<<setw(5)<<248<<endl;
运行结果
_ _248
2.流输出进制
dex 置基数:10 ~ "%d"
hex 置基数:16 ~ "%X"
oct 置基数: 8 ~ "%o"
若调用二进制需要 #include <bitset.h>,调用bitset<int size>(int n)将十进制输出为二进制
例:cout<<hex<<255<<endl;
cout<<bitset<11>(255)<<endl;
运行结果
f f
00011111111
3.填充字符 setfill(char c)
例:cout<< setfill('0') << setw(6) << 248<<endl;
运行结果
000248
4.进制转换 setbase(int n)
使用 #include <stdlib.h>,调用itoa( )函数,任意进制转换
例:cout<<setbase(8)<<setw(5)<<255<<endl;
运行结果
377
5.设置小数精度 setprecision(int n)
默认输出数值有效位为6
例:cout<<setprecision(3)<<22.123<<endl;
运行结果
22.1
6.设置格式标志 setiosflags(ios_base::fmtflags mask)
用setiosflags(ios::fixed)/fixed
7.重置格式标志 resetiosflags(ios_base::fmtflags mask)
标签:salary,cout,hour,50,40,加班,小时 From: https://www.cnblogs.com/BOKE2/p/17282601.html