#include<stdio.h>
#define run(x) x%100!=0&&x%4==0||x%400==0?1:0
int dofm[13][2]={
0,0,
31,31,28,29,31,31,30,30,
31,31,30,30,31,31,31,31,
30,30,31,31,30,30,31,31,
};
int main(){
int y,m,d,n;//n是所给的一年中的第几天
while(scanf("%d %d",&y,&n)!=EOF){
m=0;
while(n>0){
m++;
n=n-dofm[m][run(y)];
}
d=dofm[m][run(y)]+n;
printf("%04d-%02d-%02d\n",y,m,d);
}
return 0;
#define run(x) x%100!=0&&x%4==0||x%400==0?1:0
int dofm[13][2]={
0,0,
31,31,28,29,31,31,30,30,
31,31,30,30,31,31,31,31,
30,30,31,31,30,30,31,31,
};
int main(){
int y,m,d,n;//n是所给的一年中的第几天
while(scanf("%d %d",&y,&n)!=EOF){
m=0;
while(n>0){
m++;
n=n-dofm[m][run(y)];
}
d=dofm[m][run(y)]+n;
printf("%04d-%02d-%02d\n",y,m,d);
}
return 0;
}
所犯错误:
要严格注意格式,输出格式,年份的地方想当然的省了0,是错误的,应该是%04d
本文深入探讨了一段用于计算日期在一年中的位置的C语言代码。通过详细解释`run`宏和`dofm`数组的作用,文章揭示了如何在不同年份中准确找出给定天数对应的日期。此外,文章指出在输出格式中忽略年份前的'0'是错误的做法,并强调了正确使用格式化字符串的重要性。
1189

被折叠的 条评论
为什么被折叠?



