目录

一、设计内容

二、概要设计

三、实验流程图

四、源程序

五、运行结果

六、总结反思


一、设计内容

用户有两个选择,可以输入某年某月输出单月的日历,也可以输入一个年份得到全年的

日历。

二、概要设计

1. 功能模块:if—else 语句实现功能选择

2. 各个模块详细的功能描述:

主函数运行后,程序提供给用户两个选项,用户可以输出某年某月的日历或某年全

年的日历。用户输入选择后,判断选择的合法性。根据用户的选择调用不同的函数实现

对应功能。

三、实验流程图

四、源程序

#include<stdio.h>

int firstdayofyear(int year);

int firstdayofmonth(int year ,int month );

int isleapyear(int year);

int dayofmonth(int year ,int month);

int main()//输入年打印出此年的日历。

{ int a[12][6][7]={0};

int year,yue;//年,月

int i,j,k,z,n,shu;//z标记星期,n为几号

printf("请输入年份:");

scanf("%d",&year);

printf("请输入月份:");

scanf("%d",&yue);

z=firstdayofyear(year);

//printf("%d",z);

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

{ k=z%7;//确定从周几开始

n=1;//每个月1号开始

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

{ for( ;k<7;k++,n++)

{ if(n>dayofmonth(year,i+1))//确保日期不超

break;

a[i][j][k]=n;//将日期赋给每天

//printf("%d",a[i][j][k]);

z=k+1;//记录明天是周几

}

k=0;//下一行周日开始

}

}

//printf("%d",z);

printf("-----------%d年%d月-----------\n",year,yue);//输出月历

printf("%3d SUN MON TUE WED THU FRI SAT\n",yue);

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

{ printf("    ");

for(k=0;k<7;k++)

{ if(a[yue-1][j][k]!=0)

printf("%2d  ",a[yue-1][j][k]);

else

printf("    ");//无日期的空格代替输出

}

printf("\n");

}

printf("\n-------------------------%d年的年历-------------------------\n",year);//输出年历

for(i=0;i<6;i++)//六次大输出

{ printf("%3d SUN MON TUE WED THU FRI SAT ",i+1);

printf("%3d SUN MON TUE WED THU FRI SAT \n",i+7);

for(j=0;j<6;j++)//每月6行

{ printf("    ");//对齐

for(k=0;k<7;k++)//每天

{ if(a[i][j][k]!=0)

printf("%2d  ",a[i][j][k]);//i+1月的日期

else

printf("    ");//无日期的空格代替输出

}

printf("    ");//对齐

for(k=0;k<7;k++)

{ if(a[i+6][j][k]!=0)

printf("%2d  ",a[i+6][j][k]);//i+7月日期

else

printf("    ");//无日期的空格代替输出

}

printf("\n");

}

}

return 0;

}

int firstdayofyear(int year) /*求某年的第一天是星期几*/

{ int i;

long  n,days=year;

days=days*365; /* printf("\n%ld",days);*/

for(i=1;i<year;i++)days=days+isleapyear(i);  /*printf("\n%ld",days);*/

n=days%7;

return n;

}

int firstdayofmonth(int year ,int month ) /* 求某年某月的第一天是星期*/

{  int i,days=0, weekdays;

weekdays=firstdayofyear(year);

for(i=1;i<month;i++)days+=dayofmonth(year,i);

return (days+weekdays)%7;

}

int isleapyear(int year)//编写函数int isleapyear(int year);判某年是否为闰年,如该年为闰年返回1,否则返回0。编写主函数输入年份给出该年是否为闰年。

{ int z;

if( (year%4==0 && year%100!=0) || year%400==0 )

z=1;

else

z=0;

//printf("%d",z);

return z;

}

int dayofmonth(int year ,int month)//编写函数int dayofmonth(int year ,int month);计算某年某月有几天。主函数中输入任意的年和月,给出此年该月有几天。

{ int z;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

z=31;

else if(month==4||month==6||month==9||month==11)

z=30;

else if(month==2)

if(isleapyear(year))

z=29;

else

z=28;

return z;

}

五、运行结果

六、总结反思

问题不大,耐心写程序。

电子万年历——沐雨先生相关推荐

  1. Android万年历课程设计,电子万年历的设计(课程设计)

    摘要: 随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变.尤其是单片机技术的应用产品已经走进了千家万户.电子万年历的出现给人们的生活带来的诸多方便.本设计主要是以单片机 ...

  2. 60秒计时器的仿真电路_DS1302的电子万年历,时间、闹钟可调,带温度农历显示,原理图、仿真和代码...

    获取设计资源,请见文末说明~ 设计要求 1.显示公历年.月.日.星期.时.分.秒: 2.可随时调校年.月.日.时.分.秒: 3.能显示农历时间,并能标明平润年: 4.具有闹钟设定提醒功能: 5.能够显 ...

  3. 万年历24节气C语言,电子万年历24节气c程序

    电子万年历24节气的c程序 /* 1 2 3 4 5 6 7 8 9 10 11 12 单位:月*/ {0x59,0x38,0x5A,0x49,0x5A,0x5B,0x6C,0x7C,0x7C,0x8 ...

  4. c语言编写闹钟主程序流程图,基于STC15W4K58S4单片机的电子万年历设计源码与报告(数码管显示)...

    基于STC15W4K58S4单片机的电子万年历(数码管显示)该压缩包包含源码TXT文件 源工程文件(Keil uVision4文件)和课程设计报告 电子时钟的设计 -单片机综合设计报告 目录 1  任 ...

  5. 基于51单片机的电子万年历的设计-源代码

    电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...

  6. 基于51单片机的电子万年历设计

    基于51单片机的电子万年历 1)LCD1602显示时间.日期.星期.温度 2)按键可调整时间日期星期 3)整点报时 4)DS1302时钟芯片 5)DS18B20温度传感器 6)闹钟功能 7)判断闰年 ...

  7. c语言电子万年历大作业,C语言实现一个简单的电子万年历

    最近帮朋友做一些C语言的练习题,期间遇到了个比较有意思的题目,意在考察模块化程序设计,大致要求如下: 电子万年历: 1.编写函数int isleapyear(int year);判某年是否为闰年,如该 ...

  8. 基于c52万年历c语言,基于STC89C52单片机的可测温式电子万年历

    随着科技的发展,生活中电子万年历越来越普遍,功能也越来越多.根据人们的日常基本需求,设计一种电子万年历,可以实现测温.闹钟.秒表和语音报警等功能,为人们的日常生活提供舒适和便捷,具有重要的使用价值. ...

  9. 如何在51单片机实现电子万年历

    如何在51单片机实现电子万年历 51单片机制作万年历的基本功能部分,软件特性可以在proteus上仿真,使用51单片机定时器T0做万年历计时信号源,电子万年历计时系统在timer模块,本模块主要是将年 ...

  10. 【002】基于51单片机的电子万年历proteus仿真设计

    一.资料内容(私信获取) (1).基于51单片机的电子万年历proteus仿真设计一份: (2).基于51单片机的电子万年历proteus仿真设计keli源代码一份: (3).基于51单片机的电子万年 ...

最新文章

  1. C#利用Graphics类绘制进阶--绘制商品69码EAN-13
  2. undo表空间文件丢失恢复(4)--无备份无recover的情况下恢复
  3. 迅雷官方回应“被拖库”致密码泄露:恶意造谣
  4. HTTP基础认证Basic Authentication
  5. Windows 服务全攻略(1)
  6. IT十八掌作业_java基础第十六天_GUI/socket
  7. easyui中获取getEditor为空情况
  8. php 常用简单函数,PHP中常用函数简单介绍
  9. centos 6.5 配置网络
  10. java中 private final_Java笔记:final与private关键字
  11. 论文浅尝 | Iterative Cross-Lingual Entity Alignment Based on TransC
  12. 计算机模拟专业,2017年数值模拟专业知识题库
  13. 如何让大数据从发现价值到创造价值
  14. [转]编程的首要原则(s)是什么?
  15. 今天我必须要全网曝光这几个公众号
  16. opencv C++ 旋转任意角度图片
  17. LeetCode题解:幂集
  18. 安装惠普M1136打印机一直处于“新设备已连接”状态 解决方法
  19. 高通APQ8074(骁龙800)处理器
  20. moss列表 查看字段长度

热门文章

  1. 用ADB操纵手机实现连点器(折衷案)
  2. 短视频推广引流方案怎么做?看这五点,让你快速裂变涨粉
  3. Linux软链接的创建,删除,修改
  4. idea 安装Vue插件 超详细
  5. 一个简单易用的m3u8下载器,支持下载m3u8链接或文件为mp4或ts格式
  6. php 磅和像素的换算,将g/cm³换算为磅每液量加仑(美国) (克每立方厘米换算为磅每液量加仑(美国))...
  7. Jmeter使用HTTP代理服务器无法打开网页问题的解决方法
  8. MathType输入花体字
  9. 树莓派开发笔记(八):GPIO口的I2C使用(BME280三合一传感器:温度、湿度、气压测量)
  10. 解决Nvidia 显卡驱动安装失败的方法