C++中输出日期显示问题(不使用printf):编程题#4:Tomorrow never knows?

由于不能使用自带的printf函数,也是哭阿,好了,直接讲解题思路:题目说了可以活用setfill和setw控制符,那应该可以解决题目:

直接贴代码:

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<iomanip>
 4 #include<string.h>
 5 using namespace std;
 6 bool IsLeapYear( int year ){
 7     bool isLeap = false;
 8     if(( year % 400 == 0)||(year % 4 == 0 && year % 100 != 0))
 9     isLeap = true;
10     return isLeap;
11 }
12 
13 int main() {
14     int year, month, day;
15     scanf("%d-%d-%d", &year, &month, &day);
16 
17     int month_data[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
18 
19     if(day >= month_data[month-1]){
20         if( month == 12 ){
21             year++;
22             month = 1;
23             day = 1;
24         }
25         else if(month == 2 ){
26             if(IsLeapYear( year ) && day == 28)
27                 day = 29;
28             else{
29                 month++;
30                 day = 1;
31             }
32         }
33         else{
34             month++;
35             day = 1;
36         }
37 
38     }
39     else
40         day++;
41     cout<<setw(4)<<year<<"-";//此处设置输出字符宽度为4,后面再输出“-”
42     cout<<setw(2)<<setfill('0')<<month;//此处设置输出字符宽度为2,字符数不足的话会被0补充
43     cout<<"-"<<setw(2)<<setfill('0')<<day<<endl;//此处先打印“-”,再输出字符宽度为2,不足的由0补充。
44     return 0;
45 
46 }

没有百度到解决方法,我也算是原创了。

原文地址:https://www.cnblogs.com/dog-and-cat/p/6719564.html