C语言编写的万年历 有平年闰年 有闹钟功能

C语言编写的万年历 有平年闰年 有闹钟功能
C语言编写的万年历 有平年闰年 有闹钟功能

#include

#include"lcd1602.h"

#include"ds1302.h"

#include"ds18b20.h"

#define uint unsigned int

#define uchar unsigned char

uint b[6];

//年月日时分秒

uchar code row1[]={"2009-01-01"};

uchar code row2[]={"00:00:00"};

uchar year1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年

uchar year2[12]={31,29,31,30,31,30,31,31,30,31,30,31};//润年

uchar j[6]={0x85,0x88,0x8b,0x84+0x40,0x87+0x40,0x8a+0x40};//LCD地址

uchar i,k,jj=0,w,clock=0,bigclock=0,c=0,num;

//i循环数k温度缓存jj地址位

uint temp;

sbit b1=P3^0;//设置

sbit b2=P3^1;//上调

sbit b3=P3^2;//下调

sbit b4=P3^3;//转换

sbit b5=P3^4;//闹钟

sbit speaker=P3^5;

lcdscan()

{

for(i=0;i<6;i++)

{

lcdwrite(j[i]);

lcdshuju(a[11-i*2]+0x30);

lcdwrite(j[i]+0x01);

lcdshuju(a[10-i*2]+0x30);

}

}

void key()

{

if(b1==0)

{

dsaddshuju(0x80,(a[1]<<4)+a[0]+0x80);

while(b1==0)

{

for(i=0;i<6;i++)

{

b[i]=a[11-i*2+clock]*10+a[10-i*2+clock];

}

if(b4==0)

{

delay(3);

jj++;

if(jj==6)

{

jj=0;

}

}

if(b2==0)

{

delay(3);

b[jj]++;

if(b[5]==60)b[5]=0;

if(b[4]==60)b[4]=0;

if(b[3]==24)b[3]=0;

if((b[0]%4==0 && b[0]%100!=0) || b[0]%400==0){if(b[2]>year2[b[1]-1])b[2]=1;}

else {if(b[2]>year1[b[1]-1])b[2]=1;}

if(b[1]==13)b[1]=1;

if(b[0]==100)b[0]=0;

}

if(b3==0)

{

delay(3);

b[jj]--;

if(b[5]==-1)b[5]=59;

if(b[4]==-1)b[4]=59;

if(b[3]==-1)b[3]=23;

if((b[0]%4==0 && b[0]%100!=0) || b[0]%400==0){if(b[2]<=0)b[2]=year2[b[1]-1];}

else {if(b[2]<=0)b[2]=year1[b[1]-1];}

if(b[1]==0)b[1]=12;

if(b[0]==-1)b[0]=99;

}

for(i=0;i<6;i++)

{

a[11-i*2+clock]=b[i]/10;

a[10-i*2+clock]=b[i]%10;

}

lcdwrite(j[jj]);

lcdshuju(0);

lcdwrite(j[jj]+1);

lcdshuju(0);

delay(200);

lcdwrite(j[jj]);

lcdshuju(a[11-2*jj+clock]+0x30);

lcdwrite(j[jj]+1);

lcdshuju(a[10-2*jj+clock]+0x30);

delay(200);

if(b1==1)

{

dsaddshuju(0x80,(a[1]<<4)+a[0]);

dson();

}

if(b5==0)clock=12;

}

}

}

void main()

{

speaker=0;

lcdrw=0;

dson();

lcdon();

lcdwrite(0x83);

for(i=0;i<10;i++)

{

lcdshuju(row1[i]);

delay(1);

}

lcdwrite(0x84+0x40);

for(i=0;i<8;i++)

{

lcdshuju(row2[i]);

delay(1);

}

dsrst=0;

dssclk=0;

while(1)

{

for(i=0;i<5;i++)

{

dsrst=1;

dswrite(0x81+i*2);

k=dsread();

dsrst=0;

a[i*2]=k&0x0f;

a[i*2+1]=(k>>4)&0x0f;

}

dsrst=1;

dswrite(0x8d);

k=dsread();

dsrst=0;

a[10]=k&0x0f;

a[11]=(k>>4)&0x0f;

delay(100);

lcdscan();

key();

if(b5==0)

{

for(i=0;i<12;i++)

{

if(a[i+12]==a[i])num++;

}

if(num==12)bigclock=1;

else num=0;

lcdwrite(0x8e);

lcdshuju('&');

}

else

{

lcdwrite(0x8e);

lcdshuju(0x00);

}

if(bigclock==1)

{

speaker=1;

c++;

if(c==100){bigclock=0;speaker=0;}

}

temp=readtemperature();//temp是uint型的。不然会出现温度到25后回00的现象。可能是由于十六进制与十进制的差异。

lcdwrite(0x8d+0x40);

lcdshuju(temp/100+0x30);

lcdwrite(0x8e+0x40);

lcdshuju(temp/10%10+0x30);

}

}

万年历C语言设计

万年历的设计: 要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。 万年历的程序流程图: 主要程序流程图: 具体对于月份和年份的程序图如下:

上图为计算星期方法 上图为打印日历程序图

万年历的设计的程序源代码: #include #include #include void f() { int day,month,year,sum,leap,S; printf("\n请输入年月日\n"); scanf("%d%d%d",&year,&month,&day); while(1) { if((month>12||month<1)||(day>31||day<1)) { printf("输入错误,重新输入"); scanf("%d%d%d",&year,&month,&day); } else break; } switch(month) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; if(year%400==0||(year%4==0&&year%100!=0)) leap=1; else leap=0; if(leap==1&&month>2) sum++; S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; switch(S)

公历闰年的计算规则

公历闰年计算规则 参考资料: https://www.360docs.net/doc/ac12854585.html,/date/leapyear.html 若一年按365天5h48'46''(此时86400年也是闰年)计算,一年日数必须是整数,不便将零时数计入,所以取365天为一年,则余5时48分46秒,积至4年约满一日,所以4年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年365天,闰年366天。但到4年之时,仅有23时15分4秒闰一日,欠缺44分56秒;积至100年(25闰)时就欠缺18时43分20秒,约合3 / 4日,所以满100年不闰;此时又余5时16分40秒,积至400年余21时6分40秒又闰;又欠缺2时53分20秒,积至3200年计欠缺23时6分40秒,所以满3200年不闰;此时又余53分20秒,积至86400年刚好24 时又一闰,这是不余不欠,需重计算,所以按阳历计算就有上面的闰年规则。 按一回归年365天5h48'45.5''计算:3200年多出16000小时153600分145600秒=18600小时26分40秒,共32*24+8=136个闰年=776*24=18624小时>18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了26分40秒怎么办需要多少个周期弥补?答案是54个周期,为172800年,因为172800/3200=54

个周期54*26分40秒=1404分2160秒=24小时。 历法规则的来由 若一年按365天5h48'46''(此时86400年也是闰年)计算: (1)一年日数必须是整数,不便将零时数计入,所以取365天为一年, 则余5时48分46秒; (2)积至4年约满一日,所以4年一“闰日”,谓之“闰年”,无“闰 日”之年为平年,即平年365天,闰年366天。但到4年之时,仅有23时15分4秒闰一日,欠缺44分56秒; (3)积至100年(25闰)时就欠缺18时43分20秒,约合3 / 4日, 所以满100年不闰。此时又余5时16分40秒; (4)积至400年余21时6分40秒又闰。又欠缺2时53分20秒; (5)积至3200年计欠缺23时6分40秒,所以满3200年不闰。此时 又余53分20秒; (6)积至86400年刚好24 时又一闰,这时不余不欠,需重计算。

C语言编写的万年历代码

该代码在VC++6.0编译器下运行,只要按照编译器给出的说明操作,就能将万年历显示在调试窗口中了……………………………………由于制作时间匆忙,很多注释都来不及写了,对于出学者可以慢慢看,代码很简单的,都放在了主函数里,如果有兴趣的话,可以把这些代码放在几个文件里,这样会好看点,加油了! #include #include void main() { int m,i,j,n=0,y=2010,wo,w,a; printf("input the form of: year-month:\t"); scanf("%d-%d",&y,&m); //输入格式的决定 if(y%4==0&&y%100!=0||y%400==0) a=29; else a=28; //闰年的判断及2月日数的确定 if(m<1||m>12){ printf("month is not exit,please input later!\n"); exit(0); } wo=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; //1月1日的算法wo表示 for(i=0;i<55;i++) printf("*"); //*的输入 printf("\n"); for(j=1;j<=7;j++) printf("星期%d\t",j); //星期的输入 printf("\n"); //表前的建造 switch(m){ case 1:for(i=1;i

printf("\t"); n++; } for(j=1;j<=31;j++){ if(n%7==0) printf("\n"); printf("%d\t",j); n++; } break; // 1 month case 2:w=(wo+31)%7; for(i=1;i

微机原理课程设闰年的计算完整版

******************* 实践教学 ******************* 兰州理工大学 软件职业技术学院 2011年春季学期 微型计算机原理及应用课程设计 题目:闰年计算 专业班级: 姓名: 学号: 指导教师: 成绩:

前言 随着计算机技术的飞速发展,计算机改变了世界,也改变了人类的生活。作为现代科学技术的主流,新世界的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。 汇编语言是微型计算机原理及应用的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。尽管汇编语言程序设计编程效率低,但其运行效率高、速度快。因此掌握汇编语言是学好微机原理和接口设计的第一步。 本课设就是以闰年计算为题材,让我们掌握汇编语言、微机原理和接口的关系。

中文摘要 利用DOS 21H 中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCII码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。 本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。根据判断闰年规则:如果某年能被4整除但不能被100整除或者该年不能被400整除,则改年为闰年,否则不是闰年。在本程序运行后,要从键盘输入年份,通过计算后,就能输出该年份是否为闰年的信息。 关键字:缓冲区、字符转换、判断闰年

前言 (1) 中文摘要 (2) 目录 (3) 内容 (4) 一、设计要求及目的 (4) 1.设计要求 (4) 2.设计目的 (4) 二、设计内容 (4) 三、设计思路 (4) 1.设计思路 (4) 2.设计流程图 (5) 3.程序说明 (5) 四、软件使用说明书 (7) 总结 (10) 参考文献 (11) 致谢 (12) 附录 (13)

C语言课程设计万年历 完整版

目录 一引言 (2) 二系统功能和数据说明 (3) 一)功能简介 (3) 二)程序中的数据说明 (3) 三程序总体设计及流程图 (4) 一)应用到的c语言 (4) 二)程序的总框架 (5) 四功能模块设计及调试 (5) 一)算法说明 (5) 1.总天数的算法 (5) 2.计算输入日期是星期几 (6) 3.对输入信息的汇总 (8) 4..界面的控制 (10) 二)调试结果 (11) 五程序清单 (12) 六结束语 (17)

一引言 通过大一上学期对C语言的学习,了解到了很多C语言的相关知识。学习的过程有很多困惑但是当自己能够独立的看懂,能过独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。我可以里哟哦那个它看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对探究的兴趣。 C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合于编写各种软件。 在这次的课程设计中我将把日常生活中最经常接触的——日期的查询利用C语言的程序编成一个简单的日历。通过这个小小的日历可以实现很多功能。在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。在不断的调试中最终才获得最为完整的程序。接下来就是我的C 语言课程设计的具体内容来了

二系统功能和数据说明 (一)功能简介 在我们的日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简介明了的给我们最想要的日期信息。在我的万年历当中,就是将日历,月历做的简单明了,很方便我们的使用。下面是它要实现的一些基本功能:用C语言编写万年历 1、输入年份,判断是否为闰年 2、输入年月日,判断改日为星期几 3、输入年份,打出12个月历,输入月份,打出该月的日历 4、要求用多个函数实现 [名称]万年历 [修改]1、对输入的日期进行容错处理 2、增加和修改为英文的月份和星期显示 3、采用指针形式的weeks和month数组 (二)程序中的数据说明 ①int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 这是定义的关于每个月天数的数组,根据大小月以及二月分的特殊情况将每个月的天数最为数组中的元素存入数组当中。其中days[1]=28,是将闰年二月的天数28天作为初始元素存入。在经过theWeek函数后就可以给days[1]中存入正确的月天数。 ②char *weeks[7] ={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; char *months[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November",

C语言万年历设计报告

C语言课程 设计报告题目:编写万年历系统 年级: 专业: 班级: 姓名: 学号:

目录 第1章设计目的 第2章需求分析 第3章概要设计 第4章源程序清单 第5章执行结果 1)登陆界面 2)显示当前日月历 3)显示具体日期信息 第6章程序问题调试与课程设计心得

第1章设计目的 设计目的(实验要求): 1.模仿现实生活中的挂历. 2.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几). 3.当系统日期变到下一月时,系统自动翻页到下一月. 第2章需求分析 (1)程序运行时,首先给出菜单选项和输入提示: (2)用户可以通过主菜单选择不同选项。输入1,通过输入当前日期可显示当前月的日历;输入2,通过输入具体日期(中间以空格分开)可显示该日具体信息;输入3,则退出查询系统。

第3章概要设计 1.菜单选择界面可通过下面所示函数时现; 主要思路: 通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选 项的功能实现。 闰年与平年的判断: 代码如下: void main() { int year,month,day,a,b; while(1) { printf("\n\n\n\n"); printf(" **********************************************************\n\n"); printf(" * * \n");

printf(" Welcome to enter calendar system \n"); printf(" * * \n\n"); printf(" **********************************************************\n\n\n" ); printf(" 1 The month of current date 2 Date 3 Exit\n"); printf(" please import your choose<1~3>,press Enter to define: "); scanf("%d",&b); switch(b) { case 1: printf("\n Please import the year,month and day which you want to check,the year,month and day separation by blank space: "); scanf("%d%d%d",&year,&month,&day); a=x3(year,month,1); if(a==0) { printf("Error!Please import again.\n"); break;} yueli(year,month,day); break; case 2: printf("\n Please import the year,month and day which you want to check, the year,month and day separation by blank space: "); scanf("%d%d%d",&year,&month,&day); a=x3(year,month,day); if(a==0) { printf("Error!Please import again.\n"); break;} rili(year,month,day); break; case 3: exit(0); default: printf("Error!Please import again.\n\n"); } }

用c语言编写万年历程序

《C程序设计》课程设计报告 2011-2012学年第二学期 设计题目:万年历的设计 指导教师:李素若 完成时间:2012年6月1日至2011年6月26日 第 1 组报告成员 成绩评定:分任课教师签字: 2012年6月 21 日

目录 目录 目录 (2) 1序言 (3) 2设计题目 (3) 3问题定义 (4) 4总体分析与设计 (5) 4.1总体流程图 (5) 4.2算法中涉及的知识点 (6) 4.3详细设计 (6) 5调试与测试 (9) 6参考文献 (11) 7总结与心得 (11)

1 序言 我们经过了一个学期的c语言课程的学习,对计算机变成所需的c语言有了大体的了解,能够看懂和编写一些简单的c语言程序,为了更好的加深同学们对c语言的认识,提升同学们的c语言时间编程能力,所以进行了c语言的课程设计。 本程序是一个万年历程序,可以在程序中任意的输入公元年份,通过程序的将该年份的各种信息形象直观的显示出来,达到c语言程序编写所体现的方便快捷的功效。同时,通过对该程序c语言的编写,能够在训炼我们在课本中学到各种知识点,并将其应用其中。 2 设计题目: 1设计编写一个C程序—“万年历”。 2输入任一年将显示出该年的所有月份日期,对应的星期。 3 下一行显示星期,从周日到周六,中英文都可以。

4 下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。 5 月份:中文英文都可以,注意闰年情况。 3 问题定义(或系统分析): 1 要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下: the calendar of the year2008. January Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 February Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ============================================= 2 判断是不是闰年(year%4!=0||year%100==0&&year%400!=0)满足条件就是平

c语言课程设计报告--万年历,最详细

C语言课程设计报告 -----万年历 设计人:贾伟涛 学号:2013010912 班级:13电信应电班 指导老师:张伟 日期:2014年6月9日

内容提要 通过大一下学期对C语言的学习,了解到了很多C语言的相关知识。学习的过程虽然有很多困惑,但是当自己能够独立的看懂和独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。我虽然可以看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对c语言的兴趣。 C语言是近年在国内外得到迅速推广应用的一种机器语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合于编写各种软件。 在这次的课程设计中我将把日常生活中最经常接触的——日历的查询,利用C语言的程序编成一个简单的万年历查询系统。通过这个小小的系统可以实现很多功能。在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。在不断的调试中最终才获得最为完整的程序。接下来就是我的C语言课程设计的具体内容来了,大家拭目以待吧!

目录 一、系统功能和数据说明----------------------- 二、问题分析--------------------------------- 三、程序总体设计及功能结构框图--------------- 四、程序流程图------------------------------- 五、源程序代码------------------------------- 六、使用说明--------------------------------- 七、个人心得--------------------------------- 八、参考文献---------------------------------

用C语言编写万年历,详细代码

/* welcome to use the WanNianLi system! */ #include #include #include char* month_str[]={"January","February","March","April","May","June","July","August ","September","October","November","December"}; char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Sat urday"}; int leap (int year)//判断闰年 { if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; } int month_day(int year,int month) //判断这一个月有多少天 { int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; //初始化每个月的天数if(leap(year)&&month==2 ) return 29; else return(mon_day[month-1]); } int firstday(int year,int month,int day)//判断这一个月的第一天是星期几 { int c=0; float s; int m; for(m=1;m

闰年的计算方法

第一,什么是闰年 什么是闰年呢?闰年就是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份,即有闰日的年份为闰年。 地球绕太阳运行周期为365天5小时48分46秒(合365.24219天),即一回归年(t ropical year)。公历的平年只有365日,比回归年短约0.2422 日,每四年累积约一天,把这一天加于2月末(2月29日),使当年的历年长度为366日,这一年就为闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,经过四百年就会多出大约3天来,因此,每四百年中要减少三个闰年。所以规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的就是平年。比如,1700年、1800年和1900年为平年,2000年为闰年。 第二,闰年怎么算 明白了下面的闰年规则,就明白闰年怎么算。 公历闰年判定遵循的规律为:四年一闰,百年不闰,四百年再闰。 公历闰年的精确计算方法:(按一回归年365天5小时48分45.5秒) ①、普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年) ②、世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年) ③、对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年。如172 800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)(此按一回归年365天5h48'45.5''计算)。 第三,excel中闰年怎么算 1900年是不是闰年?在论坛里大家常在交流1900年是不是闰年这个话题。

c语言万年历

c语言万年历 #include main() { for(;;) { int nian,yue,a,b,m,c,_m=28; long e; printf("请输入年份:"); scanf("%d",&nian); e=nian; e=e-1; e=(e*365+e/4)%7; m=e; if((nian%4==0)||(nian%100==0)&&(nian%400!=0)) //求出nian是否为闰年// m++; printf("%d的日历:",nian); for(yue=1;yue<=12;yue++) { if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) { c=0; printf("\n"); printf(" %d月\n",yue); printf(" 日一二三四五六\n"); for(b=1;b<=m;b++) { c++; printf(" "); } for(a=1;a<=31;a++) { c++;

if(c%7-1==0&&c!=1) printf("\n"); if(a<10) printf(" "); printf(" %d ",a); m++; if(m==7) m=0; } printf("\n"); } else { if(yue==4||yue==6||yue==9||yue==11||yue==2) { if(yue==2) { c=0; printf("\n"); printf(" %d月\n",yue); printf(" 日一二三四五六\n"); for(b=1;b<=m;b++) { c++; printf(" "); } for(a=1;a<=_m;a++) { c++; if(c%7-1==0&&c!=1) printf("\n"); if(a<10) printf(" ");

小学数学1-6年级的计算公式

小学数学1-6年级的计算公式.DOC 小学数学图形计算公式 平面图形的周长 1.长方形的周长=(长+宽)×2,C=(a+b)×2 2.正方形的周长=边长×4,C=4a 3.直径=半径×2,d=2r;半径=直径÷2,r=d÷2 4.圆的周长=圆周率×直径=圆周率×半径×2,c=πd=2πr 平面图形的面积 1.长方形的面积=长×宽,S=ab 2.正方形的面积=边长×边长,S=a×a= a2 3.三角形的面积=底×高÷2,S=ah÷2 4.平行四边形的面积=底×高,S=ah 5.梯形的面积=(上底+下底)×高÷2,S=(a+b)h÷2 6.圆的面积=圆周率×半径×半径,S=πr2 7.长方体的表面积=(长×宽+长×高+宽×高)×2=(ab+ah+bh)×2 8.正方体的表面积=棱长×棱长×6,S=6 a2 9.圆柱的侧面积=底面圆的周长×高,S=ch 10.圆柱的表面积=上下底面面积+侧面积,S=2πr2 +2πrh 立体图形的体积 1.长方体的体积=长×宽×高,V =abh 2.正方体的体积=棱长×棱长×棱长,V=a×a×a= a3 3.圆柱的体积=底面积×高,V=Sh,V=πr2h 4.圆锥的体积=底面积×高÷3,V=Sh÷3=πr2h÷3 具体情景问题 和、差、倍问题 (和+差)÷2=大数,(和-差)÷2=小数 和÷(倍数+1)=小数,小数×倍数=大数(或者和-小数=大数)差÷(倍数-1)=小数,小数×倍数=大数(或小数+差=大数) 植树问题 (1 )非封闭线路上的植树问题主要可分为以下三种情形:a.如果在非封闭线路的两端都要植树,那么: 株数=段数+1=全长÷株距+1

万年历C语言代码

万年历C语言代码 #include main() { for(;;) { int year,month,a,b,c,m,n=28;/*定义变量*/ long e; printf("请输入年份"); scanf("%d",&year); e=year; e--; /*前一年*/ e=(e*365+e/4)%7; /*计算这一年的第一天是星期几*/ m=e; /*把第一天的日期赋给m*/ if((year%4==0)||(year%100!=0)&&(year%400!=0))/*如果是闰年*/ n++; printf("%d的日历:",year); for(month=1;month<=12;month++) { if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)/*这几个月每个月都是31天*/ { c=0; printf("\n"); printf(" %d月\n",month); printf(" 日一二三四五六\n"); for(b=1;b<=m;b++) { c++; printf(" ");/*从星期日开始到这个月开始的那天前都是空的*/ } for(a=1;a<=31;a++) { c++; if(c%7-1==0&&c!=1)/*判断一行是否已排满,满了就要换行*/ printf("\n"); if(a<10) /*如果是小于10,空一格,大于10,前后空*/ printf(" "); printf(" %d ",a); m++; if(m==7)/*一行排满,开始换行。(指的是这个月的最后一行)*/ m=0;

小学三年级时间日期闰年计算方法

四年一闰;百年不闰,四百年再闰;千年不闰,四千年再闰;万年不闰,五十万年再闰。 公历纪年法中,能被4整除的大多是闰年 能被100整除而不能被400整除的年份不是闰年 能被3200整除的也不是闰年 如1900年是平年,2000年是闰年,3200年不是闰年。 平年是365天,二月为28天;闰年是366天,二月为29天.闰年的二月比平年的二月多一天.那么闰年多出的一天是从哪来的呢这是教师应该了解的一个有趣的问题.我们知道一年是地球绕太阳旋转(也称公转)一周所需的时间,而地球绕太阳旋转一周实际的时间是365日5小时48分46秒.为了方便,我们把平年按365 天计算,实际上就少算了5小时48分46秒,四年就相差了23小时15分4秒,也就是说4年就少算了近一天.所以每四年就规定了一个闰年,把这一天加在闰年的二月,以补上少算的时间,也称为"四年一闰".根据上面的叙述,每四年出现一个闰年时,时间并不是整整24小时,所以四年一闰又多算了44分56秒.按这样计算,每一百年就多算了18小时43分20秒,又将近一天.所以,到公元整百年时,这一年不算闰年,以抵消多算的时间,称为"百年不闰".按上面百年不闰的计算,每一百年又多出了5小时16分40秒,这样每四百年就多出了21小时6分40秒,差不多又是一天.所以,到公元年份是四百倍数时,这一年又是闰年,称为"四百年又闰".这就是"四年一闰,百年不闰,四百年又闰"的道理.按推2000年是闰年,2100年就不是闰年.同样道理,"四百年又闰"实际上又亏了2小时53分20秒,经过八个四百年(3200年), 又要亏23小时6分40秒.因此,当公元年份是3200的倍数时,还要减去一闰(也就是说公元3200,6400年,都不是闰年).这样,交叉地计算闰年,与公转的实际时间,误差就很微小了 .公历闰年计算(按一回归年365天5小时48分45.5秒) ①、普通年能整除4且不能整除100的为闰年。 (如2004年就是闰年,1900年不是闰年) ②、世纪年能整除400的是闰年。(如2000年是闰年,

用C语言编写万年历

#include//假设今天是2013年12月22号,是星期天,根据这个日期计算日历中的某天距离今天有多少天,且输入的日期为星期几!查表得1800年1月1日为星期三。 int i,j,k,a,b,c,w=0;//i,j,k分别代表全局变量的年月日。 int y() { int p, h=0,inleap=0,leap=0,sum=0,count1,count2,leap1; scanf("%d",&i); if(i>2100||i<1800)printf("输入的年份不合法,或者不在程序运算的范围内"); else{ printf("%d年的年历为:\n",i); for(j=1;j<=12;j++) { { for(a=1800;a<=i;a++) {if((a%4==0&&a%100!=0)||(a%400==0))leap++;else inleap++; } count1=leap*366;count2=inleap*365; switch(j) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; } sum=sum+count1+count2; { if(i%400==0||(i%4==0&&i%100!=0))leap1=1; //如果不是闰年则直接执行 else leap1=0; if(leap1==1&&j>2) //如果是闰年并且月份大于2,总天数应该加一天 sum++;} h=(sum+2)%7; } if((i%4==0&&i%100!=0)||(i%400==0)) {switch(j)

C语言万年历系统

山东交通学院 面向对象课程设计 字符统计软件 院(系)别信息科学与电气工程学院班级计算111 学号 姓名李峰辉 指导教师徐硕博 时间2012-03-05—2012-03-09

课程设计任务书 题目万年历系统程序设计 系 (部) 信息科学与电气工程学院 专业计算机科学与技术 班级计算111 学生姓名李峰辉 学号 3 月 5 日至 3 月 9 日共 1 周 指导教师(签字) 系主任(签字) 年月日

一、设计内容及要求 编写一万年历系统(限最多1人完成) 要求: 模仿现实生活中的挂历. 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几). 当系统日期变到下一月时,系统自动翻页到下一月. 二、设计原始资料 C语言程序与设计 三、主要参考资料 谭浩强《C程序设计》第四版 四、设计完成后提交的文件和图表 文件:万年历系统文件,及源代码 图表 1,进入万年历系统 2,任意键进入菜单 3,当输入非法字符时,提示错误,重新输入 4,进入选项1,日历显示并显示日历 5,进入选项2,日历查询并显示所查询的日期 6,当查询输入非法字符时,提示错误,返回主菜单 7,进入选项3,退出

五,流程图功能模块 显示模块 月历显 示 日期查 询 日期判 断 日期调 整 闰年判 断 程序进入 显示当前时 1、日期显示1、日期显示 2、日期查询 3、退出程序 3、退出程序 2、日期查询

六,源代码 #include #include #include #include int year,month,day; //全局变量记录时间 int daysOfMonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,3 1,30,31,31,30,31, 30,31}}; void main() { int runYear(int year); struct tm* getDay();//从系统取得当前时间,结构体,在函数中指定程序员需要的标准类型(实践结构体) int chaxunday(int year,int month,int day);//检查日期是否正确 int qudeDay(int year,int month,int day);//取得星期 void printrili(int year,int month,int day);//打印月历 void checkrili();//查询日历 void backMenu(); void mainMenu(int &year,int &month,int &day);//主菜单 struct tm *gmt=getDay();//用系统时间进行初始化, year=gmt->tm_year+1900; month=gmt->tm_mon+1; day=gmt->tm_mday; printrili(year,month,day);//打印当前月历 backMenu(); mainMenu(year,month,day); } struct tm* getDay()//从系统取得当前时间 { time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer);

C语言实训题目设计报告 万年历

C语言实训题目设计报告:万年历系统 1、题目设计: 设计一个万年历系统 功能要求: (1)从2000年开始,用户输入年份与月份,将显示出该年该月份的日历,对应的星期。 (2)用户输入年份,将显示该年的日历 (3)注意闰年情况 显示格式要求如下: (1)第一行显示月份(中英文都可以) (2)下一行显示星期,从周日到周六,中英文都可以 (3)下一行开始显示日期从1号开始,并按其是星期几实际情况与上面的星期数垂直对齐 (4)程序输出菜单,用户按照提示操作,最终得到计算结果。 2、问题分析: 该程序可大致分成主菜单、年历、月历3个部分,并且还有判断是否为闰年、月份的天数、该月第一天为周几三个小模块,并可由年历、月历调用,年历、月历可由主菜单调用。最后可以考虑一下界面的优化和输入错误等小问题。 3、算法设计: 主菜单部分:用户输入选项,用一个switch语句来进行接下来的任务,其中有一个选项是用来退出的。在进行到程序结尾的时候用goto语句来实现回到函数最开始的目的。 月历部分:从键盘接收年份和月份,通过小函数来获得本月的天数和本月一号是周几,从而在屏幕上输出月历。在到周末的时候换行。 年历部分:大体思路和月历相似,只是多用了一个for循环,使得月份从一月一直到十二月(其实这部分我是复制的月历部分的)。 判断闰年部分:输入年份,输出1或0。 判断天数部分:输入年份,月份,输出天数。其中有调用闰年的函数。 判断周几部分:输入年,月,日,输出是周几的信息。 4、程序源代码: #include #include #include int ifren(int year)//判断是否是闰年 { if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; } int monthday(int month,int year)//判断这个月有多少天

公历闰年的精确计算方法

1. 阳历中有闰日的年份叫闰年,相反就是平年,平年为365 天,闰年为366 天。 在公历(格里历)纪年中,平年的二月为28天,闰年的二月为29 天。闰年平月 2 月29 日为闰日。 2. 闰年的计算方法:公历纪年法中:能被 4 整除的大多是闰年;能被100 整除而不能被400 整除的年份不是闰年;能被3200整除的也不是闰年;如1900 年是平年,2000年是闰年,3200 年不是闰年。 3. 中国农历的闰年:中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13 个月,383或384 天。 4. 闰年遵循的规律:四年一闰,百年不闰,四百年再闰。 中国旧历农历每月的天数依照月亏而定,一年的时间以12 个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2 到 4 年,增加一个月,增加的这个月为闰月。在加有闰月的那一年有13 个月,历 年长度为384或385日,这一年也称为闰年。 原因:地球绕太阳旋转一周实际的时间是365日5小时48分46秒.为了方便,我们把平年按365天计算实际上就少算了5小时48分46秒,四年就相差了23小时15分4秒也就是说4年就少算了近一天.所以每四年就规定了一个闰年把这一天加在闰年的二月以补上少算的时间,也称为“四年一闰”,根据上面的叙述每四年出现一个闰年时时间并不是整整24 小时,所以四年一闰又多算了44 分56秒.按这样计算每一百年就多算了18 小时43分20秒又将近一天,所以到公元整百年时这一年不算闰年以抵消多算的时间称为“百年不闰”。按上面百年不闰的计算每一百年又多出了5小时16分40秒,这样每四百年就多出了21 小时6分40秒,差不多又是一天所以,到公元年份是四百倍数时这一年又是闰年,称为——四百年又闰 这就是“四年一闰、百年不闰、四百年又闰”的道理。按推2000 年是闰年,2100年就不是闰年,同样道理四百年又闰实际上又亏了2小时53分

万年历计算方法

万年历计算方法 1。平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。 由于公元1月1日设为星期六,故3月1日为星期三。——注意这个“三” 为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。 2。每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。) 所以百年%4=0闰或(年%4=0并且年<>0)闰。 3。每 4年(3个平年+1个闰年)共208周+5天——注意这个“5天” 每百年共100*(208周+5天)-1天=5217周+5天——注意这个“5天”(整百年暂设为平年) 每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和 “1天”(4个整百年只有一个闰年) 即400年一轮回!(原来万年历400年前是一家) 蔡勒(Zeller)公式 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的蔡勒(Zeller)公式 即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。) 算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。 以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下: 蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1

相关文档
最新文档