C语言课程设计万年历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
课程名称____C语言程序设计__ __ 题目名称万年历
学生学院物理与光电工程学院
专业班级__ 光信息科学与技术
学号____ 3109008862_____ 学生姓名_______陈樟浩_______
指导教师江志文
2011 年 6 月 24 日
一、题目及已完成的功能描述
(1)题目:万年历的设计
(2)已完成的功能:
1、输入年月日,输出距今天还有多少天,是星期几,是否是公历节日。
2、输入年月,输出该月的月历。
3、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的
星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。假定输入的年份在1-9999年之间。
二、使用的所有变量的说明
int IsLeapYear(int year) 调用函数,其中变量名:year;整型;存放信息:某一年。
int month_day(int year,int month)调用函数,其中变量名:year、month;整型;存放信息:某年某月。
int DaySearch(int year,int month,int day)调用函数,其中变量名:year、month、day;整型;存放信息:某年某月某日。
int c=0,变量名:c;整型;存放信息:给c赋以初值3。
float s,变量名:s;浮点型;存放信息:定义浮点型变量。
int m,变量名:m;整型;存放信息:定义整型变量。
long daynum(int year,int month,int day) 调用函数,其中变量名:year、month、day;整型;存放信息:某年某月某日。
int i,变量名:i;整型;存放信息:定义整型变量。
long num=0,变量名:num;长整型;存放信息:给num赋以初值0。
void M_count(int year,int month,int day) 调用函数,其中变量名:year、month、day;整型;存放信息:某年某月某日。
long num1,num2,变量名:num1,num2;长整型;存放信息:定义长整型变量。int PrintAllYear(int year)调用函数,其中变量名:year,整型;存放信息:某一年。
int temp,变量名:temp;存放信息:定义整型变量。
int i,j,变量名:i,j;存放信息:定义整型变量。
int PrintAllMonth(int year,int month) 调用函数,其中变量名:year、month;整型;存放信息:某年某月。
int option,da,变量名:option,da;整型;存放信息:定义整型变量。
char ch,变量名:ch;字符型;存放信息:定义字符型变量。
int year,month,day,变量名:year,month,day;整型;存放信息:定义整型变量。
三、程序清单及其说明
#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"," Saturday"};
int IsLeapYear(int year) /*判断闰年,若为闰年返回值1,若否返回值0*/ {
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
int month_day(int year,int month) /*判断x年x月x的天数*/
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};/*平年1月到12月的天数*/
if(IsLeapYear(year)&&month==2)/*判断x年是否为闰年,若为闰年且month=2,则天数为29,若不是则天数为28*/
return 29;
else
return(mon_day[month-1]);
}
int DaySearch(int year,int month,int day) /*计算x年x月x是星期几*/ {
int c=0;
float s;
int m;
for(m=1;m c=c+month_day(year,m); c=c+day; s=year-1+(float)(year-1)/4-(float)(year-1)/100+(float)(year-1)/400+c; return ((int)s%7); /*S%7的余数为星期数,若余数为0,则为星期天*/ } long daynum(int year,int month,int day)/*计算某一天距离公元一年一月一日的天数*/ { int i; long num=0; for(i = 1; i < year; i++) { num+= 365; if(IsLeapYear(i))/*如果是闰年就加1*/ { num+=1; } } for(i = 1; i < month; i++) { num+=month_day(year, i); } num=num+day; return num; } void M_count(int year,int month,int day)/*计算某天距离今天(可任意设定)的天数*/ { long num1,num2; char xq[7][10]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; num1=daynum(year,month,day);/*某天距离公元一年一月一日的天数为 num1*/ num2=daynum(2011,6,24);/* 设定今天是2011年6月24号,距离公元一年一 月一日的天数为num2*/ num1=num2-num1;/*得出某天距离今天(2011,6,24)的天数*/ printf("\n距今%d天\n",num1);