1 条题解

  • 0
    @ 2020-04-16 21:47:51

    本题为综合题
    第一题用setw和setfill结合实现格式输出
    第二题的菱形需要求出每行的两个星号的位置,这个问题是数学问题,找下规律即可,找到位置后利用setw和setfill进行输出
    第三题考察setprecision设置有效数字,并且不需要fixed
    第四题考察科学记数法的输出,即scientific操作符,注意保留6为有效数字是5位小数,所以精度应设置为5
    第五题考察boolalpha操作符,输出布尔变量为true/false

    #include<iostream>
    #include<iomanip>
    #include<cmath>
    using namespace std;
    //日期类
    class Date
    {
        friend istream& operator>>(istream& c, Date& px);
        friend ostream& operator<<(ostream& c, Date px);
    private:
        int year, month, day;
    public:
        Date(int y = 2000, int m = 1, int d = 1) :year(y), month(m), day(d) {}
    };
    
    //判断质数
    bool IsPrime(int x)
    {
        if (x == 1) return false;
        int i;
        for (i = 2; i * i <= x; i++)
        {
            if (x % i == 0) return false;
        }
        return true;
    }
    int main()
    {
        //任务1
        Date da;
        cin >> da;
        cout << da << endl;
        //任务2
        int h;
        cin >> h;
        for (int i = 1; i <= h; i++)
        {
            int mid = (h + 1) / 2;
            int lc = abs(i - mid) + 1;//左边星号位置
            int rc = 2 * mid - lc;//右边星号位置
            cout << setw(lc) << setfill(' ') << '*';//输出左边星号
            if (rc > lc) cout << setw(rc - lc) << '*';//输出右边星号
            cout << endl;
        }
        //任务3
        int prec;
        double val;
        cin >> prec >> val;
        cout.unsetf(ios::fixed);
        cout << setprecision(prec) << showpoint << val << endl;
        //任务4
        double sc1, sc2;
        
        cin >> scientific >> uppercase >> sc1 >> sc2;
        cout << scientific << uppercase << setprecision(5) << sc1 + sc2 << endl;//注意这里6位有效数字是5位小数
        //任务5
        int pri;
        cin >> pri;
        cout << boolalpha << IsPrime(pri);
    }
    
    istream& operator>>(istream& c, Date& px)
    {
        c >> px.year >> px.month >> px.day;
        return c;
    }
    
    ostream& operator<<(ostream& c, Date px)
    {
        //日期格式
        c << px.year << '-' << setw(2) << setfill('0') << px.month << '-' << setw(2) << px.day;
        return c;
    }
    
    
  • 1

信息

ID
1015
难度
3
分类
(无)
标签
递交数
114
已通过
37
通过率
32%
上传者