1 条题解
-
05-何承哲 (938936) LV 9 MOD @ 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%
- 上传者