由於不能使用自帶的printf函數,也是哭阿,好了,直接講解題思路:題目說了可以活用setfill和setw控制符,那應該可以解決題目: 直接貼代碼: 沒有百度到解決方法,我也算是原創了。 ...
由於不能使用自帶的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 }
沒有百度到解決方法,我也算是原創了。