24节气距天c语言(24节气的C值算法)

今天给各位分享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日,就是这么简单。

24节气距天c语言(24节气的C值算法)

用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值算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月3日 18:45:28
下一篇 2024年4月3日 18:54:45

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3600
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5200
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4000
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4000
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    6900
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6000
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4100
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4500
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3100
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4000

发表回复

登录后才能评论



关注微信