今天给各位分享24节气距天c语言的知识,其中也会对24节气的C值算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、求一个计算24节气的c程序,给出计算公式也行,多谢。2、用C语言输入年月日,输出距今天还有多少天,星期几,是否是公历节日3、求C语言万年历程序 要求能满足下列要求4、用C语言怎么编写万年历5、怎么用C语言编写编写万年历?6、用C语言实现农历表和二十四节气的算法
求一个计算24节气的c程序,给出计算公式也行,多谢。
可以根据每年的立春的日期,推算全年的24节气,每年的立春日期计算公式如下:
立春之后每个15天就是一个节气
节气日期速算法:通式寿星公式——[Y×D+C]-L
Y=年代数、D=0.2422、L=闰年数、C取决于节气和年份。
本世纪立春的C值=4.475,求2017年的立春日期如下:
[2017×0.2422+4.475]-[2017/4-15]=492-489=3
所以2017年的立春日期是2月3日,就是这么简单。
用C语言输入年月日,输出距今天还有多少天,星期几,是否是公历节日
试试这个吧,GetNextTime函数
/*—————————————————————–*\
author: wanfustudio
mail : wanfu.liu@163.com
Rights: 任意拷贝,修改,传播包括商业使用
Q A :
如何疑问,以及想法,不满足的需求
欢迎来函!!!
\*—————————————————————–*/
#include stdio.h
#include string.h
#include time.h
#include math.h
/*这段是注释,放在此处用以说明各个成员的含义,在time.h中定义*/
#if 0
struct tm {
int tm_sec; /* seconds after the minute – [0,59] */
int tm_min; /* minutes after the hour – [0,59] */
int tm_hour; /* hours since midnight – [0,23] */
int tm_mday; /* day of the month – [1,31] */
int tm_mon; /* months since January – [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday – [0,6] */
int tm_yday; /* days since January 1 – [0,365] */
int tm_isdst; /* daylight savings time flag */
};
#endif
/*—————————————————————–*\
全局变量
\*—————————————————————–*/
/* 数组与下面tm结构中定义的tm_wday取值范围相对应 */
const char *Week[]=
{
“星期天”,
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”
};
/*—————————————————————–*\
函数声明
\*—————————————————————–*/
/* 一年中第X天是星期几 */
void GetWeekDay(int year,int num);
/* X年X月X日是一年中的第X天,星期几 */
void GetSomeDay(int year, int mon, int day);
/* X年X月X日再过X天是一年中的第X天,星期几 */
void GetNextTime(int year, int mon, int day,int num);
/* X年某月末日到X年X月某日有多少天 */
int GetDistBetweenTwoDays(int year, int mon, int day, int year2, int mon2, int day2);
/*—————————————————————–*\
函数实现
\*—————————————————————–*/
void GetSomeDay(int year, int mon, int day)
{
time_t t;//存储需要计算时间距1900的秒数
struct tm test ;//填充这个结构
struct tm *now = NULL;
memset(test, 0, sizeof(tm));//先清空下
test.tm_year = year – 1900;
test.tm_mon = mon -1;
test.tm_mday = day ;
t = mktime(test);// 转换成秒
now = localtime(t);//再转回tm
printf(“%d\n”, now-tm_yday);//第几天
printf(“%s\n”, Week[now-tm_wday]);//星期几
}
void GetNextTime(int year, int mon, int day,int num)
{
struct tm *pNext= NULL;
struct tm now, tmp;
time_t t;
memset(now, 0 , sizeof(struct tm));
memset(tmp, 0 , sizeof(struct tm));
now.tm_year = year-1900; //指定年
now.tm_mon = mon -1;//指定月份
now.tm_mday = day + num; //指定是哪一天
t = mktime(now);//转换成秒
pNext = localtime(t);
printf(“%s\n”, asctime(pNext));//哪一天
printf(“%s\n”, Week[pNext-tm_wday]);//星期几
}
void GetWeekDay(int year,int num)
{
time_t t;//存储需要计算时间距1900的秒数
struct tm test ;//填充这个结构
struct tm *now= NULL;
memset(test, 0, sizeof(tm));//先清空下
test.tm_year = year – 1900;
test.tm_mday = num +1;
t = mktime(test);// 转换成秒
now = localtime(t);//再转回tm
printf(“%d\n”, now-tm_yday);//第几天
printf(“%s\n”, Week[now-tm_wday]);//星期几
}
int GetDistBetweenTwoDays(int year, int mon, int day, int year2, int mon2, int day2)
{
int distance = 0;
struct tm now, tmp;
time_t t1,t2;
long diff = 0;
memset(now, 0 , sizeof(struct tm));
memset(tmp, 0 , sizeof(struct tm));
now.tm_year = year-1900; //指定年
now.tm_mon = mon -1;//指定月份
now.tm_mday = day; //指定是哪一天
tmp.tm_year = year2-1900;
tmp.tm_mon = mon2 -1;
tmp.tm_mday = day2;
t1 = mktime(now);// 转换成秒
t2 = mktime(tmp);
diff = (long)fabs(difftime(t1, t2)); /* 算绝对值(秒) */
distance = diff / 3600 / 24; /* 转成天 */
printf(“相隔 %d 天\n”, distance);
return distance;
}
/*—————————————————————–*\
函数测试
\*—————————————————————–*/
int main()
{
GetWeekDay(2007,337);
GetSomeDay(2007,12,4);
GetNextTime(2005,12,4,100);
GetDistBetweenTwoDays(2011, 4, 30, 2011, 5, 2);
return 0;
}
/*—————————————————————–*\
author: wanfustudio
mail : wanfu.liu@163.com
如何疑问,以及想法,不满足你的需求
欢迎来函!!!
\*—————————————————————–*/
求C语言万年历程序 要求能满足下列要求
C语言设计简单万年历源代码[含阳历阴历转化、密码登陆功能]
C语言课程设计简单万年历源代码[含阳历阴历转化、密码登陆功能]发布:极乐鸟 | 发布时间: 2009年6月23日
万年历
一.基本要求
1. 万年历是简单实用的单机软件。考虑到学生们对日历的认知比较熟悉,所以需要他们实现日历的诸多功能。在编码前先提供清晰的设计框架,再用C语言的程序源完成主要模块的详细设计。即:先构想好流程图,然后利用流程图编写C语言源代码,编写的源代码在TC上运行,运行通过后再进行测试。
2. 一人一组完成程序的分析和编码。
3. 熟悉各个流程步骤,理解各个环节之间的控制流程。
4. 熟练掌握TC或Visual C++下C程序的运行环境。
5. 熟练掌握C语言,调用子程序和函数进行读写数据的操作。程序编写过程中必须用到函数、指针、文件操作等C语言技能。
二、任务分解
本软件能查询0~20000年的公历并能查询1900-2200年的农历,是真正的“万年历”。
1. 显示封面模块(初始界面)
(1)执行本软件后首先显示欢迎信息、版本号、作者姓名、日期及其它信息。
(2)进入方式:按回车进入日历系统,按‘ESC’键退出。
2. 密码检测模块
(1)进入日历系统时,需要密码验证,若密码输入正确则课选择进入日历系统或进入重设新密码页面,否则若密码输入连续3次错误按任意键退出程序。
(2)若需重设新密码,则按‘Y’键即进入重设新密码系统。
(3)在重设新密码时,要求输入正确的旧密码2次,才能输入新密码进行重设。
(4)若输入旧密码3次错误,重设新密码失败,按任意键退出到初始界面。
(5)定义文件指针,用来读取密码文件中的密码数据和将新的密码数据写入密码文件。
3. 查询显示日历模块
(1)查询并显示某一个月的日历(公历);
(2)查询并显示某一年的日历(公历);
(3)查询并显示某一天是星期几,属于该月的第几个星期;
(4)查询并显示某一天是该年的第几天;
(5)查询并显示某一天对应的农历是哪一天;
(6)能够查询中国传统的24节气所对应的公历和农历
(7)当所查询日历完成,按上下光标键可以进行向前向后翻屏查询;按‘ENTER’键重新输入年月,进行新的查询;按‘ESC’键退出程序。
4. 特殊功能模块:用函数实现特殊功能子模块(子程序)。
(1)通过文件操作设置自己的备忘录;
(2)中国传统节日自动提醒或特殊显示。
5. 学生们可以自由发挥增添更丰富的功能。
#include stdio.h
int day,year,month;
int isLeap()
{int isleap;
if(((year%4==0)!(year%100==0))||(year%400==0))isleap=1;
else isleap=0;
return isleap;}
int lastdayofmonth()
{int lastday,isleap;
switch (month)
{case 1: case 3: case 5: case 7:case 8: case 10: case 12: lastday=31;break;
case 4: case 6: case 9: case 11: lastday=30;break;
case 2: {isleap=isLeap();
if (isleap==1) lastday=29;
else lastday=28;}}
return lastday;}
int ValidDate()
{int valid;
int yearOK,monthOK,dayOK;
if ((year1811)(year=2012)) yearOK=1;
else yearOK=0;
if ((month0)(month=12)) monthOK=1;
else monthOK=0;
if ((day0)(day=lastdayofmonth())) dayOK=1;
else dayOK=0;
if(yearOK monthOK dayOK) valid=1;
else valid=0;
return valid;}
int getday(){printf(“Enter a month/a day/a year”);scanf(“%d %d %d”,month,day,year);
return ValidDate();}
void incrementdate()
{if (daylastdayofmonth()) day+=1;
else
{day=1;
if (month==12)
{month=1;year+=1;}
else month+=1;}}
void print()
if (ValidDate())printf(“nextday is %d/%d/%d”,month,day,year);elseprintf(“Date error”);}
void main(){getday();incrementdate();print();}
补充一下,又发现一个问题。输入之后虽然你做了输入检查,但是现在的写法,这个检查起不到任何作用。可以把main里的getday();改写成if(getday()==0){printf(“Date error”);return;}意思是如果输入的日期不正常的话打出出错信息并结束程序
主要功能包括
1.查询某年某月每一天对应星期几
2.可以查询某年某月的上个月或是下个月的日历情报
3.查询某年某月某日是这一年的第几天,并查询改天是星期几
4.判断该年是闰年还是平年,判断这一年的生肖
#include stdio.h
#include conio.h
#include dos.h
void rili(int,int);
int runniansub(int);
int week(int,int,int);
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{ struct date d;
getdate(d);
printf(“今天是:%d年 %d月 %d日\n”,d.da_year,d.da_mon,d.da_day);
rili(d.da_year,d.da_mon-1);
system(“pause”);
return 0; }
void rili(int year,int month)
{ int d,w,i,s,c,p;
char x;
while(month11) {
month-=12;
year++; }
while(month0) { year–;
month+=12; }
if(runniansub(year)) monthday[1]=29;
printf(“%d年%d月\n”,year,month+1);
printf(“S M T W T F S\n”);
s=week(year,month+1,1);
for(i=0; i3*s; i++ ) printf(” “);
c=s;
for(d=1;d=monthday[month];d++) {
if(c6) {
printf(“\n”);
c=0; }
c++;
printf(“%d”,d);
printf(“%s”,(d10)?” “:” “); }
printf(“\n”);
printf(“下月N,上月P,退出Q”);
x=getch();
printf(“%c\n”,x);
if(x==’N’ || x==’n’) { rili(year,month+1); }
else if(x==’P’ || x==’p’) { rili(year,month-1); }
else { printf(“感谢使用!88\n”); return;} }
int runniansub(int year)
{ return ((year%4==0 year%100!=0) || (year%4==0 year%400==0)); }
int week(int y,int m,int d)
{ if((m==1)||(m==2)) {
m+=12;
y–; }
return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)+1)%7;
#include stdio.h
int IsLeapYear(int); /*定义子函数*/
main()
{int i,day,year,temp,temp_i; /*定义变量*/
long int Year_days=0;
int Year_Start=1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};/*定义
月份*/
printf(“We know that 2000.01.01 is saturday!\n”);
printf(“Please enter the year and month:”); /*提示信息*/
while(1)
{scanf(“%d %d”,year,temp);
if(getchar()==’q’)
exit(0);
while(Year_Start year)
{ if(IsLeapYear(Year_Start)) /*调用IsLeapYear函数判断是否为
闰年*/
Per_Year_Days=366; /*闰年一年366天*/
else
Per_Year_Days=365; /*平年一年365天*/
Year_days=Year_days + Per_Year_Days;
Year_Start++;
} /*输出每个月的日历*/
// for(temp=1;temp=12;temp++)
{switch(temp)
{ case 1: printf(“January (%d) \n”,year);break;
case 2: printf(“February (%d) \n”,year); break;
case 3: printf(“March (%d) \n”,year); break;
case 4: printf(“April (%d) \n”,year); break;
case 5: printf(“May (%d) \n”,year); break;
case 6: printf(“June (%d) \n”,year);break;
case 7: printf(“July (%d) \n”,year);break;
case 8: printf(“Auguest (%d) \n”,year); break;
case 9: printf(“September (%d) \n”,year);break;
case 10:printf(“October (%d) \n”,year);break;
case 11:printf(“Novermber (%d) \n”,year); break;
case 12:printf(“December (%d) \n”,year); break;
default:printf(“error\n”);
}
i=Year_days%7;
printf(“Mon Tue Wed Thu Fri Sat Sun\n”); /*星期提示信息*/
if(i!=0)
for(temp_i=0;temp_ii;temp_i++)
printf(” “);
day=1;
if(IsLeapYear(year)temp==2)
while(day=month_day[12])
{if(day1)
if(Year_days%7==0)
printf(“\n”);
if(day=10)
printf(“%d “,day);
else
printf(“%d “,day);
Year_days++;
day++;}
else
while(day=month_day[temp-1])
{ if(day1)
if(Year_days%7==0)
printf(“\n”);
if(day=10)
printf(“%d “,day);
else
printf(“%d “,day);
Year_days++;
day++; } /*依次输入日期*/
printf(“\n”) ;}}}
int IsLeapYear(int year) /*判断是否是闰年*/
{ if((year%4==0)(year%100!=0)||(year%400==0))
return 1;
else
return 0;}}
#include stdio.h
int leap (int year)
{if(year%4==0year%100!=0||year%400==0) //判断是否是闰年
return 1;
else return 0; }
int days_month (int month,int year) //判断大月和小月
{ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //找出大月
return 31;
if(month==4||month==6||month==9||month==11) //找出小月
return 30;
if(month==2leap(year)==1) return 29; //判断二月是29天还是29天
else return 28; }
int firstday(int month,int year)
{int w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; //判断每个月开始的第一天是星期几
return w; }
main()
{int i,j=1,k=1,a,b,month,year;
printf(“\n input month and year:\n”);
scanf(“%d%d”,month,year); //输入月和年
b=days_month(month,year);
a=firstday (month,year);
printf(” Sun Mon Tue Wed Thu Fri Sat \n”); //输出对应当月的日历
if(a==7)
{for(i=1;i=b;i++)
{printf(“%4d”,i);
if(i%7==0)
{printf(“\n”); } } }
if(a!=7)
{while (j=4*a)
{printf(” “);
j++; }
for(i=1;i=b;i++)
{printf(“%4d”,i);
if(i==7*k-a)
{printf(“\n”);
k++; } } }
printf(“\n”); }
PS:这份是山东交通学院信息工程系电气类专业2009年6月C语言课程设计的题目之一。以上程序核心是一学妹写的,因为她写出后出现了一些bug,本人负责了调试及bug修补工作。
用C语言怎么编写万年历
1、首先下载安装Notepad++,这是一款免费的且能够编辑C语言的软件。
2、然后下载安装tdm-gcc,这是为了给电脑配置环境变量,以便能够编译C语言的。
3、在安装完以上两款软件后,还要配置一下环境变量。
4、然后开始编辑C语言万年历,首先要判断一个年份是闰年还是平年,用一个子程序来做:
5、然后就开始写主程序:首先用scanf得到一个年份,在判断这个年份是平年还是闰年后用printf在CMD中打出来。
6、在编写完成后,在Notepad++界面下按下F5,在输入框中输入:
cmd /k gcc -o “$(CURRENT_DIRECTORY)\$(NAME_PART).exe” “$(FULL_CURRENT_PATH)” CLS “$(CURRENT_DIRECTORY)\$(NAME_PART).exe” PAUSE EXIT
7、最后点击运行,会弹出CMD,在里面输入年份后回车:例如输入2017,然后回车,就会生成2017年的万年历了!
怎么用C语言编写编写万年历?
农历,大月30天,小月29天。
还有闰月。这个有点麻烦。我不知道农历的润月是怎么个润法。
农历
[解释]1.中国的一种历法,是阴阳历的一种,一般就叫阴历。平年十二个月,大月三十天,小月二十九天,全年354天或355天(一年中哪一月大,哪一月小,年年不同)。由于平均每年的天数比太阳年约差十一天,所以在十九年里设置七个闰月,有闰月的年份全年383天或384天。又根据太阳的位置,把一个太阳年分成二十四个节气,便于农事。纪年用天干地支搭配,六十年周而复始。这种历法相传创始于夏代,所以又称为夏历。也叫旧历。
2.农业上使用的历书。
即夏历。(“农历”一称流行的原因:由于文化大革命时期极左思潮泛滥,“横扫四旧”,认为“夏历”是夏王朝的印记,必须改名;因传统历法在农村使用较普遍,故通过报纸改名“农历”:1968年元旦,全国报纸报头一夜间将“夏历”名称改成了“农历”。
按:所谓“农历”,是指它有指导农业生产的意义,但事实上农历月日与季节变化相差明显,指导农时的效果并不好,我国古代真正指导农时的是“二十四气”,它实际是一种特殊的“阳历” )
农历的历月长度是以朔望月为准的,大月30天,小月29天,大月和小月相互弥补,使历月的平均长度接近朔望月。
农历固定地把朔的时刻所在日子作为月的第一天——初一日。所谓“朔”,从天文学上讲,它有一个确定的时刻,也就是月亮黄经和太阳黄经相同的那一瞬间。(太阳和月亮黄经的计算十分繁琐和复杂,这里就不予介绍了)
至于定农历日历中月份名称的根据,则是由“中气”来决定的。即以含“雨水”的月份为一月;以含“春分”的月份为二月;以含“谷雨”的月份为三月;以含“小满”的月份为四月;以含“夏至”的月份为五月;以含“大暑”的月份为六月;以含“处暑”的月份为七月;以含“秋分”的月份为八月;以含“霜降”的月份为九月;以含“小雪”的月份为十月;以含“冬至”的月份为十一月;以含“大雪”的月份为十二月。(没有包含中气的月份作为上月的闰月)
农历的历年长度是以回归年为准的,但一个回归年比12个朔望月的日数多,而比13个朔望月短,古代天文学家在编制农历时,为使一个月中任何一天都含有月相的意义,即初一是无月的夜晚,十五左右都是圆月,就以朔望月为主,同时兼顾季节时令,采用十九年七闰的方法:在农历十九年中,有十二个平年,为一平年十二个月;有七个闰年,每一闰年十三个月。
为什么采取“十九年七闰”的方法呢? 一个朔望月平均是29.5306日,一个回归年有12.368个朔望月,0.368小数部分的渐进分数是1/2 、1/3 、3/8 、4/11 、7/19 、46/125, 即每二年加一个闰月,或每三年加一个闰月,或每八年加三个闰月……经过推算,十九年加七个闰月比较合适。因为十九个回归年=6939.6018日,而十九个农历年(加七个闰月后)共有235个朔望月,等于6939.6910日,这样二者就差不多了。
七个闰月安插到十九年当中,其安插方法可是有讲究的。农历闰月的安插,自古以来完全是人为的规定,历代对闰月的安插也不尽相同。秦代以前,曾把闰月放在一年的末尾,叫做“十三月”。汉初把闰月放在九月之后,叫做“后九月”。到了汉武帝太初元年,又把闰月分插在一年中的各月。以后又规定“不包含中气的月份作为前一个月的闰月”,直到现在仍沿用这个规定。
为什么有的月份会没有中气呢? 节气与节气或中气与中气相隔时间平均是30.4368日(即一回归年排65.2422日平分12等分),而一个朔望月平均是29.5306日,所以节气或中气在农历的月份中的日期逐月推移迟,到一定时候,中气不在月中,而移到月末,下一个中气移到另一个月的月初,这样中间这个月就没有中气,而只剩一个节气了。
上面讲过,古人在编制农历时,以十二个中气作为十二个月的标志,即雨水是正月的标志,春分是二月的标志,谷雨是三月的标志……把没有中气的月份作为闰月就使得历月名称与中气一一对应起来,从而保持了原有中气的标志。
从十九年七闰来说,在十九个回归年中有228个节气和228个中气, 而农历十九年有235个朔望月,显然有七个月没有节气和七个月没有中气,这样把没有中气的月份定为闰月,也就很自然了。
农历月的大小很不规则,有时连续两个、三个、四个大月或连续两个三个小月,历年的长短也不一样,而且差距很大。节气和中气,在农历里的分布日期很不稳定,而且日期变动的范围很大。这样看来,农历似乎显得十分复杂。其实。农历还是有一定循环规律的:由于十九个回归年的日数与十九个农历年的日数差不多相等,就使农历每隔十九年差不多是相同的。每隔十九年,农历相同月份的每月初一日的阳历日一般相同或者相差一、二天。每隔十九年,节气和中气日期大体上是重复的,个别的相差一、两天。相隔十九年闰月的月份重复或者相差一个月。
干支纪法
干支就字面意义来说,就相当于树干和枝叶。我国古代以天为主,以地为从,天和干相连叫天干,地和支相连叫地支,合起来叫天干地支,简称干支。
天干有十个,就是甲、乙、丙、丁、戊、己、庚、辛、壬、癸,地支有十二个,依次是子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。古人把它们按照一定的顺序而不重复地搭配起来,从甲子到癸亥共六十对,叫做六十甲子。
我国古人用这六十对干支来表示年、月、日、时的序号,周而复始,不断循环,这就是干支纪法。
传说黄帝时代的大臣大挠“深五行之情,占年纲所建,于是作甲乙以名日,谓之干;作子丑以名日,谓之枝,干支相配以成六旬。”这只是一个传说,干支到底是谁最先创立的,现在还没有证实,不过在殷墟出土的甲骨文中,已有表示干支的象形文字,说明早在殷代已经使用干支纪法了。
用C语言实现农历表和二十四节气的算法
#includestdio.h
void DateTrans(char *chDate,int *nYear,int *nMonth,int *nDay); // 1
int IsLeapYear(int nYear); // 2
int GetWeekOfFirstday(int nYear); // 3
int GetWeek(int nYear,int nMonth,int nDay,int nWeekOfFirstday); // 4
void PrintCalendar(int nWeek,int nDay,int nMonthDays,char *chDate); // 5
void DateTrans(char *chDate,int *nYear,int *nMonth,int *nDay) // 1
{
*nYear=(chDate[0]-‘0’)*1000+(chDate[1]-‘0’)*100+(chDate[2]-‘0’)*10+chDate[3]-‘0’;
*nMonth=(chDate[5]-‘0’)*10+chDate[6]-‘0’;
*nDay=(chDate[8]-‘0’)*10+chDate[9]-‘0’;
}
int IsLeapYear(int nYear) // 2
{
if(nYear%4==0)
return 1;
else
return 0;
}
int GetWeekOfFirstday(int nYear) // 3
{
if(nYear2000)
return ((nYear-2001)*365+(nYear-2001)/4+1)%7;
else if(nYear2000)
return 6-((2000-nYear)*365+(2000-nYear)/4)%7;
else
return 6;
}
int GetWeek(int nYear,int nMonth,int nDay,int nWeekOfFirstday) // 4
{
int nDaysYear[]={31,28,31,30,31,30,31,31,30,31,30,31};
int nDaysLeapYear[]={31,29,31,30,31,30,31,31,30,31,30,31};
int i,sum=0;
if(nYear%4==0)
{
for(i=0;i(nMonth-1);i++)
{
sum+=nDaysLeapYear[i];
}
return (sum+nDay+nWeekOfFirstday-1)%7;
}
else
{
for(i=0;i(nMonth-1);i++)
{
sum+=nDaysYear[i];
}
return (sum+nDay+nWeekOfFirstday-1)%7;
}
}
void PrintCalendar(int nWeek,int nDay,int nMonthDays,char *chDate) // 5
{
int i,j;
printf(“the calender of this month as following:\n”);
printf(“*********************************\n”);
printf(” SUN MON TUE WEN THU FRI STA\n”);
for(i=1,j=1;j=nMonthDays;i++)
{
if(i=nWeek+1)
printf(” “);
else
{
printf(“%4d”,j);
j++;
}
if(i%7==0)
printf(“\n”);
}
printf(“\n********************************\n”);
printf(“OK!\n”);
}
main()
{
char chDate[11],i=0,j,isleapyear;
int nYear,nMonth,nDay;
int nWeekOfFirstday;
int nMonthDays;
int nWeek;
char *Week;
int nDaysYear[]={31,28,31,30,31,30,31,31,30,31,30,31};
int nDaysLeapYear[]={31,29,31,30,31,30,31,31,30,31,30,31};
printf(“请输入你要查找的日期,如(2001\\01\\01或2001.01.01:\n或者是你想要日历的月份:如(2000\\01或2000.01):\n”);
do{
scanf(“%c”,chDate[i]);
i++;
}while(chDate[i-1]!=’\n’);
if(i==11)
chDate[i-1]=’\0′;
else
for(j=8;j11;j++)
chDate[j]=’0′;
DateTrans(chDate,nYear,nMonth,nDay); // 1
while(nYear=0||nMonth1||nMonth12)
{
printf(“查询年月chDate非法\n”);
return 0;
}
nWeekOfFirstday = GetWeekOfFirstday(nYear); // 3
nWeek=GetWeek(nYear,nMonth,nDay,nWeekOfFirstday); // 4
isleapyear=IsLeapYear(nYear); // 2
if(isleapyear==1)
nMonthDays=nDaysLeapYear[nMonth-1];
else if(isleapyear==0)
nMonthDays=nDaysYear[nMonth-1];
if(i==11)
{
while(nDay1||nDaynMonthDays)
{
printf(“查询日期chDate非法\n”);
return 0;
}
switch(nWeek)
{
case 0:
Week=”SUNDAY”;
break;
case 1:
Week=”MONDAY”;
break;
case 2:
Week=”TUESDAY”;
break;
case 3:
Week=”WEDNESDAY”;
break;
case 4:
Week=”THUESDAY”;
break;
case 5:
Week=”FRIDAY”;
break;
case 6:
Week=”SATERDAY”;
break;
}
printf(“This day (%s) is %s\n”,chDate,Week);
printf(“OK!\n”);
}
else
PrintCalendar(nWeek,nDay,nMonthDays,chDate); //5
}
你看看这个怎么样 ?
关于24节气距天c语言和24节气的C值算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。