c语言程序设计打印月历,c语言程序设计-打印月历(8页)-原创力文档

《C 语言课程设计 》

课程设计报告

题目

学号

姓名

年级专业

指导教师

完成日期年月日

安徽师范大学物理与电子信息学院

College of Physics and Electronic Information, Anhui Normal University

2

一、问题描述

日期按星期排列

日历查询,输入日期进行查询。

闰年判断功能显示查询日期所在月份的月历, 还将显示所在年份是否为闰年。

二、问题分析

对于要求 1:根据蔡勒公式, 可以很容易地有年月日推断出星

期:

rst=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-

1)/400)+ds;

wkd=rst%7;

对于要求 2: 在打印月历时,只要知道第一天的星期,就可以

依次输入后面的日期,通过定长度输出日期,在遇到某天时星期六时,就换行输出,因此可以按照月历的格式输出。

5)

对于要求 3:闰年的判断,能被 4 整除但不能被 100 整除,或者能被

整除的年份为闰年,否则为平年。日期的查询,就是直接打印改天所在月份的月历。

三、 小组成员:

3

四、总体设计

功能模块

输入日期日期查询闰年判断排列星期

月历显示

流程图

进入程序

输入年月

判断闰年

按星期排

输出月历

4

五、详细设计

主要函数:

int runYear(int year);

该函数判断某年是否是闰年,参数year 表示要判断的年份,返回值1 表示该年

为闰年, 0 表示该年为平年。

int CalWkd(int yr,int mth)

该函数确定每月的天数,闰年二月为29 天。

showcld(int wkd,int mtd)

该函数用以根据一个日期推断星期,参数为要判断的年月日。返回值为整型,

123456 分别表示星期一到星期六,0 表示星期天。

六、程序清单

#include

int JgYr(int yr)

{

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

return 1;

else

return 0;

}

int CalWkd(int yr,int mth)

{

int ds=0,i,rst,wkd;

int mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if (JgYr(yr))

mthd[2]=29;

for (i=1;i

ds+=mthd[i];

ds+=1;

rst=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+ds;

wkd=rst%7;

return wkd;

}

showcld(int wkd,int mtd)

5

{

int dt=1,i,j=0;

printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");

for (i=0;i

{

printf("\t");

j++;

}

while (j!=7)

{

printf("%d",dt);

if (j<6)

printf("\t");

else

printf("\n");

dt++;

j++;

}

while (1)

{

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

{

printf("%d",dt);

if (j!=6)

printf("\t");

else

printf("\n");

if (dt!=mtd)

dt++;

else

return 0;

}

}

}

int main()

{

int

yr,mth,mtd,wkd,mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf("Input the Year and Month(Year-Month):");

scanf("%d-%d",&yr,&mth);

if (yr<0||mth<1||mth>12)

return 0;

if (JgYr(yr))

6

mthd[2]=29;

mtd=mthd[mth];

wkd=CalWkd(yr,mth);

showcld(wkd,mtd);

return 0;

}

七、测试数据

7

八、心得体会

经过两周的奋战,终于达到了预定的效果,完成了该信息系统的设计和编写。

此程序是一个功能比较完整的能实现一定的实际功能的程序, 代码比较短,不到 100 行,实现的功能有显示当前日历,闰年的判断,按星期显示。

然后在程序编写过程中, 遇到了问题,比如在输入年月格式不正确的情况下,有时会出现程序崩溃。到写报告为止,漏洞基本被找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值