电子万年历实验报告
数字万年历实训报告电气

一、实训目的随着科技的不断发展,电子产品的应用越来越广泛。
数字万年历作为一种常见的电子设备,具有显示日期、星期、农历、节假日等多种功能,给人们的生活带来了极大的便利。
为了更好地掌握电子产品的设计原理和制作方法,提高自身的实践能力,本次实训旨在通过设计和制作数字万年历,使学生对电子技术、电路设计、编程等方面有一个全面的认识和掌握。
二、实训内容1. 数字万年历的设计(1)功能需求分析根据用户需求,数字万年历应具备以下功能:1)显示日期、星期、农历、节假日等信息;2)具有闹钟功能,可设定闹钟时间、闹钟音量等;3)具有定时关机功能,可根据用户需求设定关机时间;4)具备背光功能,便于夜间使用;5)具有定时更新功能,可自动更新农历、节假日等信息。
(2)硬件设计1)主控芯片:选用STM32F103系列单片机,具有丰富的片上资源,易于编程和控制。
2)显示模块:采用TFT LCD显示屏,显示效果清晰,支持触摸操作。
3)按键模块:采用独立按键,实现功能选择、闹钟设置、关机等操作。
4)时钟模块:采用DS3231实时时钟模块,提供高精度的时间测量和闹钟功能。
5)背光模块:采用LED背光,可调节亮度,满足不同环境需求。
6)电源模块:采用DC-DC转换器,将5V输入电压转换为3.3V输出电压,为电路提供稳定电源。
(3)软件设计1)系统初始化:初始化各个模块,包括显示模块、按键模块、时钟模块等。
2)主循环:根据用户操作,实现功能切换、闹钟设置、关机等功能。
3)闹钟功能:实现闹钟时间设置、闹钟音量调节、闹钟提醒等功能。
4)定时关机功能:根据用户设置,实现定时关机功能。
5)背光功能:实现背光亮度调节,满足不同环境需求。
6)定时更新功能:自动更新农历、节假日等信息。
2. 数字万年历的制作(1)焊接电路板:按照电路图,焊接各个模块,确保电路连接正确。
(2)编程:使用Keil uVision5开发环境,编写STM32F103单片机程序,实现数字万年历的功能。
多功能电子万年历实训报告

一、引言随着科技的发展,电子产品在我们的日常生活中扮演着越来越重要的角色。
作为电子信息专业的一名学生,我深知理论与实践相结合的重要性。
为了提高自己的动手能力和解决实际问题的能力,我参加了本次多功能电子万年历的实训项目。
通过本次实训,我不仅掌握了单片机的基本原理和编程方法,还学会了如何将理论知识应用于实际项目中。
二、实训目的1. 熟悉单片机的硬件结构和编程方法。
2. 掌握电子万年历的设计原理和实现方法。
3. 提高动手能力和解决实际问题的能力。
4. 培养团队协作和沟通能力。
三、实训内容本次实训主要围绕多功能电子万年历的设计与实现展开,主要包括以下几个方面:1. 硬件设计:选择合适的单片机作为核心控制单元,设计电路图,并焊接电路板。
2. 软件设计:编写程序,实现万年历的基本功能,如显示日期、时间、星期、闰年判断、闹钟等。
3. 温度采集:使用DS18B20温度传感器采集环境温度,并在LCD1602显示屏上显示。
4. 按键控制:设计按键电路,实现时间校准、闹钟设置、温度显示等功能。
四、实训过程1. 硬件设计:- 选择AT89C52单片机作为核心控制单元,因为它具有低功耗、高性能的特点。
- 设计电路图,包括晶振电路、复位电路、时钟电路、按键电路、LCD1602显示电路、温度传感器电路等。
- 焊接电路板,确保电路连接正确。
2. 软件设计:- 使用Keil软件编写程序,实现万年历的基本功能。
- 编写时间显示、闹钟、温度显示等模块的程序。
- 编写按键扫描程序,实现时间校准、闹钟设置、温度显示等功能。
3. 温度采集:- 使用DS18B20温度传感器采集环境温度。
- 将温度数据转换为数字信号,并在LCD1602显示屏上显示。
4. 按键控制:- 设计按键电路,实现时间校准、闹钟设置、温度显示等功能。
- 编写按键扫描程序,检测按键状态,并执行相应的操作。
五、实训结果经过努力,我成功完成了多功能电子万年历的设计与实现。
该万年历具有以下功能:1. 显示年、月、日、星期、时、分、秒。
电子万年历组装实训报告

一、实训目的本次实训旨在通过实际操作,让学生掌握电子万年历的组装流程,熟悉电子元器件的识别与使用,了解电路原理图的阅读与理解,以及电子产品的调试与故障排除。
通过本次实训,提高学生的动手能力、实践能力和团队协作精神,为后续相关课程的学习打下坚实基础。
二、实训内容1. 实训时间:2023年X月X日至2023年X月X日2. 实训地点:XX职业学院电子实验室3. 指导老师:XXX老师4. 实训目的:(1)掌握电子万年历的组装流程。
(2)熟悉电子元器件的识别与使用。
(3)了解电路原理图的阅读与理解。
(4)学会电子产品的调试与故障排除。
(5)培养团队协作精神。
5. 实训内容:(1)电子万年历的组装1)准备所需材料:STC89C52RC单片机、DS1302时钟芯片、LCD1602液晶显示屏、电阻、电容、晶体振荡器、按键、电源模块等。
2)根据电路原理图,连接各个电子元器件,确保连接正确。
3)调试电路,检查电路是否正常工作。
(2)电子万年历的程序编写1)了解STC89C52RC单片机的编程环境,如Keil uVision。
2)学习C语言编程,编写电子万年历的程序。
3)将程序烧录到单片机中,调试程序,确保程序正常运行。
(3)电子万年历的调试与故障排除1)观察电子万年历的显示效果,确保显示日期、星期、时间等无误。
2)检查电路连接是否牢固,排除虚焊、短路等故障。
3)优化程序,提高电子万年历的稳定性和可靠性。
三、实训过程1. 组装电子万年历(1)按照电路原理图,将各个电子元器件连接到单片机上。
(2)检查电路连接是否正确,确保没有短路、虚焊等故障。
(3)通电测试电路,确认电路正常工作。
2. 编写程序(1)学习C语言编程,了解电子万年历的程序结构。
(2)编写程序,实现日期、星期、时间的显示。
(3)调试程序,确保程序正常运行。
3. 调试与故障排除(1)观察电子万年历的显示效果,确保显示日期、星期、时间等无误。
(2)检查电路连接是否牢固,排除虚焊、短路等故障。
数字万年历实习报告

实习报告一、实习背景及目的随着科技的不断发展,数字电子技术在人们的生活中扮演着越来越重要的角色。
数字万年历作为一种实用性强的电子产品,不仅能够提供准确的日期信息,还能具备一些扩展功能,如节日提醒、闹钟等。
为了提高自己的实践能力和对数字万年历的了解,我选择了数字万年历设计制作作为实习项目。
本次实习的主要目的是通过实际操作,掌握数字万年历的设计原理和制作过程,提高自己的电子技术应用能力。
二、实习内容1. 数字万年历的设计在实习过程中,我首先学习了数字万年历的设计原理,了解了其核心组成部分,包括微控制器、显示模块、按键输入模块等。
在此基础上,我根据实习指导书提供的电路图和程序代码,设计了数字万年历的硬件电路和软件程序。
2. 数字万年历的组装在设计完成后,我开始进行数字万年历的组装工作。
首先将微控制器、显示模块、按键输入模块等元器件焊接在电路板上,然后连接电源模块和时钟模块。
在组装过程中,我学习了如何使用电烙铁、焊锡等工具,提高了自己的动手能力。
3. 数字万年历的调试与优化完成组装后,我开始对数字万年历进行调试。
通过反复测试,发现并解决了一些问题,如显示模块显示异常、按键响应不良等。
在解决问题过程中,我深入分析了电路原理和程序代码,掌握了数字万年历的运行机制。
最后,我对程序代码进行了优化,提高了数字万年历的运行效率。
三、实习收获1. 提高了自己的电子技术应用能力。
通过本次实习,我掌握了数字万年历的设计原理、组装方法和调试技巧,提高了自己在电子技术方面的实际操作能力。
2. 培养了动手能力和团队协作精神。
在实习过程中,我学会了如何使用各种电子工具,培养了动手能力。
同时,与同学们一起讨论问题、分享经验,提高了团队协作精神。
3. 增强了自己的问题解决能力。
在数字万年历的调试过程中,我遇到了各种问题,通过查阅资料、请教同学和老师,逐步解决问题,增强了自己的问题解决能力。
4. 加深了对数字电子技术的理解。
通过实习,我对数字电子技术的基本原理和应用有了更深入的了解,为今后学习相关课程和从事相关工作奠定了基础。
数字万年历组装实训报告

一、实训背景随着科技的发展,电子产品在我们的日常生活中扮演着越来越重要的角色。
为了提高学生的动手能力和实际操作技能,同时也为了加深对数字电路知识的理解,我们选择了数字万年历的组装作为实训项目。
数字万年历是一种具有日历、星期、日期、农历、节假日等多种功能的电子设备,它集成了数字电路、微控制器、液晶显示屏等元件,能够直观地显示日期和时间信息。
二、实训目的1. 通过组装数字万年历,使学生掌握数字电路的基本原理和实际应用。
2. 培养学生的动手能力、团队协作能力和创新意识。
3. 加深对微控制器、液晶显示屏等电子元件的理解和认识。
4. 学会使用电子工具和仪器,提高实际操作技能。
三、实训内容1. 硬件准备:数字万年历的硬件主要包括微控制器、液晶显示屏、时钟模块、按键、电源模块等。
2. 元件识别:学习各种电子元件的外观、符号、规格等,了解它们在电路中的作用。
3. 电路设计:根据数字万年历的功能要求,设计电路图,包括电路元件的连接方式和电路参数。
4. 电路焊接:按照电路图,将各个电子元件焊接在一起,确保电路的连通性。
5. 软件编程:编写微控制器的程序,实现万年历的各项功能,如时间显示、日期设置、农历查询等。
6. 系统调试:检查万年历的各项功能是否正常,对出现的问题进行调试和修复。
四、实训过程1. 硬件准备:首先,我们准备了一套数字万年历的组装套件,包括微控制器、液晶显示屏、时钟模块、按键、电源模块等。
2. 元件识别:在指导老师的讲解下,我们学习了各种电子元件的外观、符号、规格等,了解了它们在电路中的作用。
3. 电路设计:根据数字万年历的功能要求,我们设计了电路图,包括电路元件的连接方式和电路参数。
电路图设计完成后,我们将其打印出来,作为焊接的依据。
4. 电路焊接:按照电路图,我们将各个电子元件焊接在一起。
在焊接过程中,我们注意以下几点:a. 焊接前,检查元件的规格和引脚是否正确;b. 焊接时,控制好焊接时间,避免过热损坏元件;c. 焊接完成后,检查焊接点是否牢固,是否有虚焊现象。
万年历实验报告

篇一:电子万年历实验报告重庆电力高等专科学校计算机科学系实训报告课程名称实验名称班级信息0911 姓名廖林单片机应用技术电子万年历学号 200903020243 教师任照富日期 2010-12-28 地点一教七机房一、实训任务:1、看实训要求,计划出自己实训所要用元件,在网上查找资料。
2、思考仿真原理图,然后画出来(具体i/o口暂时不确定)。
3、在网上找一些程序,然后自己改一些,进行编译。
4、编译无误之后,跟原理图相联系,完成最终的仿真图。
5、进行最后的改写,把程序和仿真原理图确定下来。
6、根据仿真图形,制作出实物图。
7、在实物制作过程中,进行电路检查和最后的调试。
二、实训要求:要求:能显示阳历的年、月、日、星期、时、分、秒;能显示阴历的年、月、日;能进行日期、时间的调整。
扩展:能显示当前温度;有闹钟功能(至少2个)选择ds1302时钟芯片,温度传感器采用ds18b20数字温度传感器。
三、实训环境(软件、硬件):软件:keil protues7.5硬件:计算机2单片机的应用四、实训意义:在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。
因此我们需要一个定时系统来提醒这些忙碌的人,而数字化的钟表给人们带来了极大的方便。
由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以单片机为核心,外加一些外围设备来实现。
电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。
因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。
而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。
所以,电子万年历无论作为竞赛题目还是毕业设计题目都是很有价值。
对于这个实验项目,我们还要有一些其他的基本知识掌握和意义:(1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,为了培养动手能力和解决实际问题的经验,了解专用时钟芯片ds1302,并会用ds1302芯片开发时钟模块,应用到其他系统中去。
电子万年历实验报告

实验报告电子万年历:一、需求分析:电子万年历系统主要实现以下单个查询功能:1、查询某一年的日历。
要求从键盘输入年份,输出该年12个月份的日历2、查询某一天某一个月的日历。
要求从键盘输入年份和月份,输出该月的日历。
3、查询某一天是星期几。
要求从键盘输入年、月、日,输出这一天是星期几。
二、总体设计:1、功能模块图计算模块:用于计算天数,判断闰年输出模块:用于菜单输出和日历输出查询模块:实现查询某一年的日历。
查询某一天某一个月的日历。
查询某一天是星期几。
三、详细设计:1、计算模块:计算模块主要包含3个函数:LeapYear()、CountYearDays()、CountMonthDays函数CountYearDays()功能是计算从公元元年1月1日到某年12月31日一共有多少天。
CountYearDays()功能是几双当年1月1日到输入日期的前一个月的天数2、输出模块包含2个函数:Menu()和ListMonth()函数。
Menu()函数用来输出系统提供的功能选项。
ListMonth()函数用来按规定格式输出一个月的日历。
3、查询模块针对系统要实现三个查询功能定义了3个函数:Search1()、 Search2()和 Search3()函数。
函数Search1()用来显示一年12个月的日历,输入年份后,计算该年1月1日是星期几,然后从1月份开始一次输出每个月的日历,其中调用了函数LeapYear()、CountYearDays()和CountMonthDays()。
函数Search2()用来显示某年某月的日历,输入年份和月份后,计算出该年该月1日是星期几,然后输出这个月的日历,其中调用了函数LeapYear()和CountYearDays()、CountMonthDays()和ListMonth()。
函数Search3()用来显示某天是星期几,通过调用函数LeapYear()、CountYearDays()和CountMonthDays()计算出从公元元年1月1日到这一天总共过去了多少天,用这个总天数除以7得到的余数即为答案。
制作电子万年历实训报告

一、引言随着科技的飞速发展,电子产品的普及和应用越来越广泛。
电子万年历作为一种常见的电子设备,不仅可以显示年、月、日、星期、时、分等信息,还可以实现闹钟、定时显示等功能。
为了提高我们的实践能力和创新能力,本次实训我们选择制作一款基于单片机的电子万年历。
二、实训目的1. 掌握电子万年历的基本原理和设计方法。
2. 熟悉单片机的编程和应用。
3. 培养团队协作能力和动手实践能力。
三、实训内容1. 硬件设计本实训所使用的硬件主要包括以下部分:- 单片机:AT89C52- 时钟模块:DS1302- 显示模块:LCD1602- 遥控模块:1838V- 按键模块:S1(设置键)、S2(上调键)、S3(下调键)、S4(复位键)硬件电路图如下:2. 软件设计本实训所使用的软件主要包括以下部分:- 单片机编程:C语言- 显示程序:LCD1602驱动程序- 遥控程序:1838V遥控接收程序软件流程图如下:3. 功能实现本实训所实现的电子万年历具有以下功能:- 显示年、月、日、星期、时、分等信息。
- 遥控操作:设置时间、星期、日期等。
- 定时显示:定时显示当前时间。
- 停电自动计时:采用DS1302时钟模块,停电后可继续计时。
四、实训过程1. 硬件搭建首先,我们根据电路图搭建了电子万年历的硬件电路。
在搭建过程中,我们注意了以下几点:- 确保电路连接正确,避免短路或开路。
- 选择合适的元器件,确保电路性能稳定。
- 对电路进行测试,确保电路正常工作。
2. 软件编程接下来,我们使用C语言对单片机进行编程。
在编程过程中,我们遵循以下步骤:- 分析功能需求,确定程序结构。
- 编写程序代码,实现各项功能。
- 调试程序,确保程序运行正常。
3. 测试与优化在完成软件编程后,我们对电子万年历进行测试。
在测试过程中,我们发现以下问题:- 遥控操作不稳定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告电子万年历:一、需求分析:电子万年历系统主要实现以下单个查询功能:1、查询某一年的日历。
要求从键盘输入年份,输出该年12个月份的日历2、查询某一天某一个月的日历。
要求从键盘输入年份和月份,输出该月的日历。
3、查询某一天是星期几。
要求从键盘输入年、月、日,输出这一天是星期几。
二、总体设计:1、功能模块图计算模块:用于计算天数,判断闰年输出模块:用于菜单输出和日历输出查询模块:实现查询某一年的日历。
查询某一天某一个月的日历。
查询某一天是星期几。
三、详细设计:1、计算模块:计算模块主要包含3个函数:LeapYear()、CountYearDays()、CountMonthDays函数CountYearDays()功能是计算从公元元年1月1日到某年12月31日一共有多少天。
CountYearDays()功能是几双当年1月1日到输入日期的前一个月的天数2、输出模块包含2个函数:Menu()和ListMonth()函数。
Menu()函数用来输出系统提供的功能选项。
ListMonth()函数用来按规定格式输出一个月的日历。
3、查询模块针对系统要实现三个查询功能定义了3个函数:Search1()、 Search2()和 Search3()函数。
函数Search1()用来显示一年12个月的日历,输入年份后,计算该年1月1日是星期几,然后从1月份开始一次输出每个月的日历,其中调用了函数LeapYear()、CountYearDays()和CountMonthDays()。
函数Search2()用来显示某年某月的日历,输入年份和月份后,计算出该年该月1日是星期几,然后输出这个月的日历,其中调用了函数LeapYear()和CountYearDays()、CountMonthDays()和ListMonth()。
函数Search3()用来显示某天是星期几,通过调用函数LeapYear()、CountYearDays()和CountMonthDays()计算出从公元元年1月1日到这一天总共过去了多少天,用这个总天数除以7得到的余数即为答案。
4、调试与测试:在调试过程中主要的问题就是结果的显示问题,显示易错位。
以及函数之间调用问题。
对于这些问题,主要是翻书籍和网络上找解决方案,以及自己亲自用找到的方法去测试。
最终解决问题。
5、测试结果菜单界面:功能一展示:功能二展示:功能三展示:6、附录:程序代码:#include<stdio.h>#include<conio.h>#include<stdlib.h>int g_MonthDays [13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义全局数组//函数声明int LeapYear(int n);int CountYearDays(int year);int CountMonthDays(int month);void Menu(void);void ListMonth(int days,int t);void Search1(void);void Search2(void);void Search3(void);void main() //main函数定义{int select;while(1){Menu(); //调用Menu函数,显示菜单scanf("%d",&select); //输入想选择的功能switch(select) //对select进行多分支选择{case 1:Search1();break; //select=1时,调用Search1函数case 2:Search2();break;case 3:Search3();break;case 0:printf("\n\t谢谢使用!再见\n");exit(0); //结束程序,退出系统default:("\n\t按键错误,请重新选择!\n"); //输入错误,应重新输入} //switch结束} //while结束}//================================================================//功能:判断闰年//参数:n为需要判断的年份//返回:是闰年返回1,否则返回0//主要思路:用if语句判断某一脸是否是闰年//================================================================int LeapYear(int n){if((n%4==0&&n%100==0)||n%400==0)return (1); //是闰年返回1 else return (0); //不是闰年返回0 }//================================================================ //功能:计算从公元元年到公元(year-1)年的总天数//参数:year为年份//返回:返回总天数//主要思路:用for循环计算天数//================================================================int CountYearDays(int year){int i,flag,days=0;for(i=0;i<year;i++){flag=LeapYear(i); //判断第i年是否为闰年if(flag) days=days+366; //是闰年加366天else days=days+365; //不是闰年应加365天}return (days); //返回总的天数}//================================================================ //功能:计算当年前(month-1)个月的天数//参数:month为月份//返回:返回前(month-1)个月的总天数//主要思路:用for循环计算天数//================================================================int CountMonthDays(int month){int i,days=0;for(i=1;i<month;i++)days=days+g_MonthDays[i];return (days);}//================================================================= //功能:显示系统菜单//参数:无//返回:无//主要思路:用printf函数输出菜单//=================================================================void Menu(void){printf("\n");printf("\t------------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎使用万年历系统 *\n");printf("\t* *\n");printf("\t------------------------------------------------\n");printf("\n");printf("\t请选择您要查询的内容\n");printf("\t1.显示某年的日历\n");printf("\t2.显示某年某月的日历\n");printf("\t3.显示某天是星期几\n");printf("\t0.退出系统\n");printf("\t请选择按键(0-3)\n");}//=================================================================//功能:按规定格式输出一个月的日历//参数:days表示要输出月份的天数,t表示要输出月份的1日是星期几//返回:无//主要思路:主要采用for语句输出日历//=================================================================void ListMonth(int days,int t){int i,j;printf("星期日星期一星期二星期三星期四星期五星期六");for(i=1;i<=days;i++){if(i==1)for(j=0;j<t;j++)printf(" "); //在数字1前输出9*t个空格printf(" % - 7d",i);if((i+t)%7==0) printf("\n");}}//=================================================================//功能:输出指定年份全年12月份的日历//参数:无//返回:无//主要思路:主要采用for语句循环输出每个月的日历//=================================================================void Search1(void){int year,t,k,flag,days;printf("\n请输入年份:");scanf("%d",&year);flag=LeapYear(year); //调用LeapYear函数,判断Year是否为闰年t=(CountYearDays(year)+1)%7; //计算该年的第一天是星期几for(k=1;k<=12;k++) //k表示月份,没循环一次输出一个月的日历{days=g_MonthDays[k]; //days为第k个月的天数if(flag&&k==2) days=29; //若是闰年,则2月份天数为29printf("\n %d月:\n",k); //输出这是几月ListMonth(days,t); //输出k月的日历t=(t+days%7)%7; //计算第(k+1)个月的第一天是星期今printf("\n");if(k%3==0) //每输出3个月的日历暂停,等用户按任意键后再继续输出{ printf("\n按任意键继续!\n");getch(); //函数功能是输入一个字符且不回显,函数定义在conio.h中}}//for结束}//=================================================================//功能:输出某年某个月的日历//参数:无//返回:无//主要思路:通过调用函数计算天数//=================================================================void Search2(void){int t,year,month,flag,days,ydays,mdays,alldays;printf("\n请输入年.月(如:2009.5):");scanf("%d.%d",&year,&month);ydays=CountYearDays(year); //计算前Year-1年的天数mdays=CountMonthDays(month); //计算前month-1个月的天数days=g_MonthDays[month]; //days为第month个月的天数flag=LeapYear(year); //判断该年是否为闰年if(flag){if(month>2)mdays++; //是闰年且month大于2时,前(month-1)个月的天数加1 elseif(month==2) days==29; //是闰年且month为2月,则2月份天数加1 }alldays=ydays+mdays+1;//计算公元元年1月1日到输入日起这个月1日的总天数t=alldays%7; //计算第month个月的第一天是星期几printf("\n%d年%d月:\n\n",year,month);ListMonth(days,t); //输出该月日历printf("\n");}//================================================================//功能:输出某一天是星期几//参数:无//返回:无//主要思路:通过调用函数计算天数,在计算并输出这一天是星期几//================================================================void Search3(void){int t,year,month,day,flag,ydays,mdays,alldays;printf("\n请输入年.月.日如(2009.3.25):");scanf("%d.%d.%d",&year,&month,&day);ydays=CountYearDays(year); //计算前(year-1)年的天数mdays=CountMonthDays(month); //计算前(month-1)个月的天数flag=LeapYear(year); //判断该年是否为闰年if(flag&&month>2)mdays++; //是闰年且month大于2时,则前(month-1)个月的天数加1 alldays=ydays+mdays+day; //计算总天数t=alldays%7;printf("\n%d年%d月%d日是",year,month,day);switch(t) //对t进行多分支选择{case 0:printf("星期日\n");break;case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;}; //switch结束}。