凯撒日期怎么写!
本人新手,请各位高手指教 凯撒日期怎么写。就是任意输入一个年月日 然后输出这个日期是这年的第几天
#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; }