注册 登录
编程论坛 C++教室

c++题目打印工资单求解

ljp294777643 发布于 2020-08-20 13:13, 2204 次点击
1. 打印工资单
【问题描述】
定义结构体,存储下表中的数据,然后按照顺序输出每个人的姓名和实发工资。
输入:3行,每行对应表格中的一行数据,以空格隔开。
输出:3行,每行包括姓名和实发工资,以空格隔开。
要求:使用结构体,结果保留两位小数。
注意:实发工资=基本工资+浮动工资-支出。
工资表
姓名 基本工资 浮动工资 支出
Zxy 230.00 400.00 76.00
Ljt 350.00 120.00 56.00
Zhm 360.00 0.00 80.00
【样例输入】
Zxy 230.00 400.00 76.00
Ljt 350.00 120.00 56.00
Zhm 360.00 0.00 80.00
【样例输出】
Zxy 554.00
Ljt 414.00
Zhm 280.00
1 回复
#2
rjsp2020-08-20 15:54
程序代码:
#include <iostream>
#include <iomanip>
#include <iterator>
#include <algorithm>
using namespace std;

struct foo
{
    foo() = default;

    std::string 姓名;
    double 基本工资;
    double 浮动工资;
    double 支出;
    const double 实发工资() const noexcept
    {
        return 基本工资 + 浮动工资 - 支出;
    }

    friend std::istream& operator>>( std::istream& is, foo& v )
    {
        return is >> v.姓名 >> v.基本工资 >> v.浮动工资 >> v.支出;
    }
    friend std::ostream& operator<<( std::ostream& os, const foo& v )
    {
        os << v.姓名 << ' ' << v.实发工资();
        return os;
    }
};

int main( void )
{
    foo s[3];
    copy_n( istream_iterator<foo>(cin), 3, s );

    cout << fixed << setprecision(2);
    copy_n( s, 3, ostream_iterator<foo>(cout,"\n") );
}
1