共42道题,当前是第41题
输入月份 m(1≤m≤12),按一定格式打印 2015 第 m 月的月历。例如,2015 年一月的月历打印效果如下(第一列为周日):
S M T W T F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int dayNum[] = {-1,31,28,31,30,31,30,31,31,30,31,30,31}; 4 int m, offset, i; 5 int main(){ 6 cin >> m; 7 cout << "S\tM\tT\tW\tT\tF\tS" << endl; 8 // '\t' 为 tab 制表符 9 ___ (1) ___; 10 for (i = 1; i < m; ++i) 11 offset = ___ (2) ___; 12 for (i = 0; i < offset; ++i) 13 cout << '\t'; 14 for (i = 1; i <= ___ (3) ___; ++i){ 15 cout << ___ (4) ___; 16 if (i == dayNum[m] || ___ (5) ___ == 0) 17 cout << endl; 18 else 19 cout << '\t'; 20 } 21 return 0; 22 }
1. D。
2. C。
3. B。
4. A。
5. B。
这道题主要是对输出的控制部分。我们主要需要控制的就是需要知道第一天是星期几以及什么时候要换行。在这段代码中,我们使用offset 来解决了这个问题。通过这个变量来这个月的第一天是星期一的后几天。从题目中给的例子中可以得知,一月份空了4天,所以初始值应该是4,之后根据每月的天数计算在第 m 个月时的偏移即可。
1. ___ (1) ___
2. ___ (2) ___
3. ___ (3) ___
4. ___ (4) ___
5. ___ (5) ___
陈伦制作 版权所无 粤ICP备16127491号-1