代码段名:计算一天是本年的第几天
新人报道,刚进入计算机的世界。就用最近学的一个代码段作为在吾爱论坛发的第一个帖子吧
#include <stdio.h>
int main()
{
int nian,yue,ri;
int days=0;
printf("请输入年月日\n");
scanf("%d",&nian);
scanf("%d",&yue);
scanf("%d",&ri);
int ma=0; //日期码
ma=ma+nian*10000;
ma=ma+yue*100;
ma=ma+ri; //把输入的日期转换成日期码
int ma1=101;
ma1=ma1+nian*10000; //设置一个新的日期码,然后设置成输入的日期码的当年的第一天
int nian1;
int yue1,ri1; //这三个变量为蓝桥杯算法服务
// printf("ma=%d,ma1=%d",ma,ma1);
for(ma1;ma1<=ma;ma1++) //摘抄蓝桥杯艺术与篮球的计算日期的算法。蓝桥杯的日期算法把日期变成可视化编号,再排除不符合日期规则的编号
{
nian1=ma1/10000;
yue1=ma1/100%100;
ri1=ma1%100;
if(yue1==0 || yue1>12 || ri1==0) //先排除超过月份和日期正常可能范围的离谱数
{
continue;
}
if(yue1==2)
{
if(nian1%4==0 && nian1%100!=0 || nian1%400==0) //设计特殊的二月份。二月份分平年和闰年
{
if(ri1>29)
{
continue;
}
}
else
{
if(ri1>28)
continue;
}
}
else if(yue1==1 || yue1==3 || yue1==5 || yue1==7 || yue1==8 || yue1==10 || yue1==12) //设计大月
{
if(ri1>31)
{
continue;
}
}
else if(yue1==4 || yue1==6 || yue1==9 || yue1==11) //设计小月
{
if(ri1>30)
{
continue;
}
}
days++; //通过了上面一堆if的安检,说明是个符合规则的日期数,天数总数自增1.然后再来一个日期码,直到和输入的日期码一样为止。
}
printf("第%d天",days);
return 0;
}
|