计算某日是该年的第几天
#include <stdio.h> int leap(int a) { if(a%4==0&&a%100!=0||a%400==0) //闰年判定条件 return 1; else return 0; } int number(int year,int m,int d) { int sum=0; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //存放平年每月天数 int b[12]={31,29,31,30,31,30,31,31,30,31,30,31}; //存放闰年每月天数 if(leap(year)==1) for(int i=0;i<m-1;i++) sum+=b[i]; //累加闰年前m-1个月的天数 else{ for(int i=0;i<m-1;i++) sum+=a[i]; //累加平年前m-1个月的天数 } sum+=d; //将前面累加的结果加上日期,求出总天数 return sum; } main() { int year,m,d,n; printf("请输入年月日\n"); scanf("%d%d%d",&year,&m,&d); n=number(year,m,d); //调用函数number() printf("第%d天\n", n); }
结果
E:\c++>a 请输入年月日 2011 11 24 第328天 E:\c++>a 请输入年月日 2012 11 24 第329天