凯撒日期怎么写!
本人新手,请各位高手指教 凯撒日期怎么写。就是任意输入一个年月日 然后输出这个日期是这年的第几天
程序代码:#include <stdio.h>
#include <stdbool.h>
int main(){
int year; //the year
int mon; //the month
int day; //the day
int dayOfYear = 0; //day of the year
bool leapYear; //if the year is a leap year??
printf("Please enter the data(YYYY-MM-DD): ");
scanf("%d-%d-%d",&year,&mon,&day);
while((mon < 1 || mon > 12)||(day < 0 || day > 31)){ //check the input
printf("Enter error!Please enter again!\n\n");
printf("Please enter the data(YYYY-MM-DD): ");
scanf("%d-%d-%d",&year,&mon,&day);
}
if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)){//if the year is a leap year,then leapYear=true
leapYear = true;
}
else{
leapYear = false;
}
if(leapYear){ //if the year is a leap year
if(mon == 1){
dayOfYear == day;
}
else if(mon == 2){
dayOfYear = 31 + day;
}
else if(mon > 2) {
dayOfYear += 60;
dayOfYear += day;
for(int i = 3;i< mon;i++){
if((i == 1)||(i == 3)||(i == 5)||(i == 7)||(i == 8)||(i == 10)||(i == 12)){
dayOfYear += 31;
}
else if((i == 4)||(i == 6)||(i == 9)||(i == 11)){
dayOfYear += 30;
}
}
}
}
else if(!leapYear){//if the year is not a leap year
if(mon == 1){
dayOfYear == day;
}
else if(mon == 2){
dayOfYear = 31 + day;
}
else if(mon > 2) {
dayOfYear += 59;
dayOfYear += day;
for(int i = 3;i< mon;i++){
if((i == 1)||(i == 3)||(i == 5)||(i == 7)||(i == 8)||(i == 10)||(i == 12)){
dayOfYear += 31;
}
else if((i == 4)||(i == 6)||(i == 9)||(i == 11)){
dayOfYear += 30;
}
}
}
}
printf("The day of the year is: %d\n",dayOfYear);
}

程序代码:#include <stdio.h>
#include <time.h>
int yday(int year, int mon, int mday)
{
int res = 0;
int mdays[13] // 每个月的天数,mdays[0] 不用
= { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if ( year % 4 == 0 // 是4的倍数,但不是 100 的倍数,或者是 400 的倍数
&& (year%100 !=0 || year%400 == 0) )
++mdays[2]; // 那么2月多一天。
if (mon > 12 || mday > mdays[mon]) return -1; // 如果给的天数比这个月应该有的天数多,不正确。
int i;
for (i = 1; i < mon; i++)
res += mdays[i]; // 之前的月全部累计
return res += mday; // 加上这个月已过的天数就是最后结果。
}
int main(int argc, char *argv[])
{
struct tm date; // 用库函数计算 2012年3月22日话,
date.tm_year = 2012 - 1900; // 年是从 1900 年算起的。
date.tm_mon = 3 - 1; // 月是从 0 算起的。
date.tm_mday = 22; // 该月的第几天正常。是从 1 算起的。
// 设置到 00:00:00 这个时间。
date.tm_hour = date.tm_min = date.tm_sec = 0;
mktime(&date); // 这个函数会设置 tm 的其它域为合适的值。
printf ("%d\n", yday(2012, 3, 22));
printf ("%d\n", date.tm_yday+1); // 该年的第几天也是从 0 算起的。
return 0;
}