由于不能使用自带的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 }
没有百度到解决方法,我也算是原创了。