#include <stdio.h>
int main()
{
int year,month,day,y,sum;
scanf("%d %d %d",&year,&month,&day);
if(year%100==0&&year%400==0)
y=100;
else if(year%4==0&&year%100!=0)
y=100;
else
y=200;
switch(y)
{
case 100:
if(month=1)
sum=day;
else if(month=2)
sum=31+day;
else if(month=3)
sum=60+day;
else if(month=4)
sum=91+day;
else if(month=5)
sum=121+day;
else if(month=6)
sum=152+day;
else if(month=7)
sum=182+day;
else if(month=8)
sum=213+day;
else if(month=9)
sum=244+day;
else if(month=10)
sum=274+day;
else if(month=11)
sum=305+day;
else if(month=12)
sum=335+day;
break;
case 200:
if(month=1)
sum=day;
else if(month=2)
sum=31+day;
else if(month=3)
sum=59+day;
else if(month=4)
sum=90+day;
else if(month=5)
sum=120+day;
else if(month=6)
sum=151+day;
else if(month=7)
sum=181+day;
else if(month=8)
sum=212+day;
else if(month=9)
sum=243+day;
else if(month=10)
sum=273+day;
else if(month=11)
sum=304+day;
else if(month=12)
sum=334+day;
break;
}
printf("%d",sum);
system("pause");
return 0;
}
以下代码可以直接复制测试,可以参考下:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
/*
使用switch语句和if...else语句,计算2008年8月8日这一天,是该年中的第几天。
程序分析:
以5月1日为例,应该先把前4个月的天数加起来,然后再加上1天即本年的第几天。
特殊情况:
在计算闰年的时候,2月是29天。
*/
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day =8;
int mNumber;//该月份number天数
int mTnumber=0;//本月之前月份累计天数
int number;//全年第number天数
int i;//定义循环变量i
for(i=0;i<=month-1;i++){
switch(i){
case 0:
mNumber=0;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
//printf("mNumber是%d",31);
mNumber=31;
break;
case 2:
//是否闰年
if(year%4==0){
//printf("是闰年,二月是29天");
//printf("mNumber是%d",29);
mNumber=29;
}else{
//printf("是平年,二月是28天");
//printf("mNumber是%d",28);
mNumber=28;
}
break;
case 4:
case 6:
case 9:
case 11:
//printf("mNumber是%d",30);
mNumber=30;
break;
}
mTnumber+=mNumber;
}
number=mTnumber+day;
//printf("2008年8月8日这一天,是该年中的第%d天",number);
printf("2008年8月8日这一天,是该年中的第%d天",number);
return 0;
}