课程设计用C语言设计一个年历系统.doc
- 文档编号:30813255
- 上传时间:2024-01-30
- 格式:DOC
- 页数:12
- 大小:943.04KB
课程设计用C语言设计一个年历系统.doc
《课程设计用C语言设计一个年历系统.doc》由会员分享,可在线阅读,更多相关《课程设计用C语言设计一个年历系统.doc(12页珍藏版)》请在冰豆网上搜索。
课程设计
课程程序设计基础
题目用C语言设计一个年历系统
1问题要求及任务描述
1.1题目要求
用C语言设计一个年历系统
1.2主要任务
年历系统首先对于输入的任一年,能够给出该年每月的日期及实际周几的对应情况,并与实际的星期数垂直对齐,如下表所示(当输入2004时显示如下):
Inputtheyear:
2004
Thecalendaroftheyear2004.
Januray1February2
============================================================
SunMonTueWedThuFriSatSunMonTueWedThuFriSat
1231234567
45678910891011121314
1112131415161715161718192021
1819202122232422232425262728
2526272829303129
============================================================
March3April4
============================================================
SunMonTueWedThuFriSatSunMonTueWedThuFriSat
123456123
7891011121345678910
1415161718192011121314151617
2122232425262718192021222324
28293031252627282930
============================================================
功能要求:
⑴输入任一年将显示出该年的所有月份日期,对应的星期,输出的格式如上表要求(注意闰年情况);
⑵输入任意日期(包括年、月、日,格式有yyy/mm/dd、dd/mm/yyyy、mm/dd/yyyy、和yyyy,mm,dd、mm,dd,yyyy、dd,mm,yyyy六种基本情况),要求能够显示出该日期是本年的哪一周,是星期几。
2解决问题的主要思路和方法
2.1关键问题
1、输入任一年将显示出该年的所有月份日期,对应的星期,但是要并排月份,还要注意闰年情况。
2、一个月份中开始和最后对应的星期可能是上个月或下个月的天数,但是要空出来。
3、输入任意日期,然后要显示出该日期是本年的哪一周,星期几。
2.2拟采用解决问题的方法
1、先判断输入的年份是否是闰年。
2、用基姆拉尔森计算公式去计算某年第一天是星期几。
3、月份的日子可以用for语句去实现,特别的,一个月份中开始和最后对应的星期可能是上个月或下个月的天数,因此要用for语句去腾空。
4、根据输入的日期和基姆拉尔森公式的变换得出能计算出该日期是本年的哪一周,是星期几的公式。
5、熟悉运用一些没学过的函数,如strcat,sprintf,strlen函数。
2.3主要算法和处理流程图
3程序实现
3.1程序实现时应考虑的问题
选择
选择其他数字则输入错误
选择2时调用函数find_day();
选择1时调用函数calendar();
选择
3.2主要源代码及说明
intjudge(intyear,intmonth)//定义judge函数
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return
(1);//返回1时,表示天数为31天的月份
elseif(month==2)
{
if(year%4!
=0||year%100==0&&year%400!
=0)//判断闰年,真为平年
return
(2);
elsereturn(3);
}
elsereturn(4);
}
voidcalendar()
{
intyear,i,j,a,n,m,k,line;//定义变量
constcharmonth[12][12]={"January1","February2","March3","April4","May5","June6","July7","August8","September9","October10","November11","December12"};
chartempOut[2][6][40],temp[10];//定义一个三维数组tempOut[左0右1][每月第几行][每行字符明细]。
printf("pleaseintertheyear:
");//输入所求年份
scanf("%d",&year);
printf("\n");
printf("thecalendaroftheyear%d.\n",year);
a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;//判断每年的第一天是周几当a值为0的时候,对应周日
for(i=0;i<12;i+=1)//月份循环
{
memset(tempOut,0,sizeof(tempOut));//memset函数的作用是在一段内存块中填充某个给定的值,它是对数组进行清零操作
printf("%-33s%s\n",month[i],month[i+1]);//输出月份名,-33是先左对齐再留33个空格
printf("============================================================\n");
printf("SunMonTueWedThuFriSatSunMonTueWedThuFriSat\n");
AGAIN:
line=0;
n=judge(year,i+1);//调用函数,n值为1234,代表每月为多少天
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 语言 设计 一个 年历 系统