本文主要是介绍C语言编写程序计算某年某月某日是该年中的第几天(3种方法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C语言编写程序计算某年某月某日是该年中的第几天
编写程序计算某年某月某日是该年中的第几天
例如输入fool girl 的出生日期1999-5-27
输出147
闰年条件
判断一个年份是否为闰年,通常有以下三个条件:
- 如果该年份能够被400整除,则是闰年。
- 如果该年份能够被4整除但不能被100整除,则也是闰年。
- 其他情况则不是闰年。
其中,第一个条件是根据闰年的定义来判断的,即每四年一闰,但是每百年不闰,每四百年再闰。因此,能被400整除的年份必然是闰年。
第二个条件则是对第一个条件的补充,因为能被4整除但不能被100整除的年份也是闰年。例如,2000年就是一个能被400整除的年份,是闰年;而1900年虽然能被4整除,但是也能被100整除,因此不是闰年。
第三个条件则是其他情况,即不能被4整除、或者能被100整除但不能被400整除的年份都不是闰年。
第一种switch语句代码实现
int year,month,day,sum=0,i;
scanf("%d-%d-%d",&year,&month,&day);
//如果是1月,直接输出day就行
if(month==1)printf("%d ",day);
else{for(i=1;i<month;i++){switch(i){case 1:case 3:case 5:case 7:case 8:case 10:case 12:sum+=31;break;case 4:case 6:case 9:case 11:sum+=30;break;case 2:sum+=28;}}sum+=day; //如果是闰年,3月之后的都需要+1if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {if (month > 2) {sum += 1;}}printf("%d ",sum);
}
第2种(将之前的月天数直接给出)
int year, month, day,sum=0;
scanf("%d-%d-%d",&year,&month,&day);
switch(month)
{case 1: sum=0; break;case 2: sum=31; break;case 3: sum=59; break;case 4: sum=90; break;case 5: sum=120; break;case 6: sum=151; break;case 7: sum=181; break;case 8: sum=212; break;case 9: sum=243; break;case 10: sum=273; break;case 11: sum=304; break;case 12: sum=334; break;
}
sum+=day;
//如果是闰年,3月之后的都需要+1
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {if (month > 2) {sum += 1;}
}
printf("%d",sum);
第3种最简方法(纯属个人认为)
//数组下标和月份一一对应,内容为对应月份的天数
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},year,month,day,sum=0,i;scanf("%d-%d-%d",&year,&month,&day);//将day存放到a[0]的位置,方便后续统计,如果是闰年,需要将2月份改为29天
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {a[0]=day;a[2]=29;
}else{a[0]=day;
} //因为a[0]存放的是day,所以就可以直接从a[0]遍历相加
for(i=0;i<month;i++){sum+=a[i];
}printf("%d ",sum);
第3种运算实例
第3种扩展方法(总天数倒着减)
int year,month,day,sum=365,i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};scanf("%d-%d-%d",&year,&month,&day);//闰年
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {a[2]=29;sum=366;
}//从12月份开始往前减
for(i=12;i>month;i--){sum-=a[i];
} //天数减去该月的天数
printf("%d ",sum-a[month]+day);
这篇关于C语言编写程序计算某年某月某日是该年中的第几天(3种方法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!