题解 | 打印日期
打印日期
https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b
#include <iostream>
#include <stdio.h>
using namespace std;
//
// void date(int m,int n,int dayOfmonth[]){
// int d,y,sum=0,i;
// for(i=0;i<12;++i){
// sum+=dayOfmonth[i];
// if(sum>=n){
// y=i;
// if(y>1){
// d=sum-n;
// }
// d=n;
// break;
// }
// }
// printf("%d-%d-%d\n",m,y,d);
//
// }
int main() {
int m, n, d, y;
int dayOfmonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
while (scanf("%d%d", &m, &n) != EOF) {
bool isLeap;
int sum = 0, i;
isLeap = m % 400 == 0 || m % 100 != 0 && m % 4 == 0;
if (isLeap) {
dayOfmonth[2] = 29;
}
//以下可以用date函数代替
for (i = 0; i <=12; ++i) {
sum += dayOfmonth[i];
if (sum >= n) {
y = i;
if (y > 1) {
sum = sum - dayOfmonth[i];
d = n - sum;
} else {
d = n;
}
break;
}
}
if (d < 10) {
if (y < 10) {
printf("%d-0%d-0%d\n", m, y, d);
} else {
printf("%d-%d-0%d\n", m, y, d);
}
} else {
if (y < 10) {
printf("%d-0%d-%d\n", m, y, d);
} else {
printf("%d-%d-%d\n", m, y, d);
}
}
//date(m,n,dayOfmonth);
}
}
王道机试指南 文章被收录于专栏
这个专栏是参考王道机试指南中相关的练习题哦

