《“万年历”》
—C语言程序设计报告
专业:
计算机科学与技术
班
级:
姓
名:
指导教师:
年月 日
目录
TOC \o "1-5" \h \z \o "Current Document" 设计的任务 3
\o "Current Document" 对问题的分析理解 3
采用的算法(流程图) 5
\o "Current Document" 算法中涉及的知识点 6
\o "Current Document" 设计用的计算机环境 6
\o "Current Document" 结论 6
\o "Current Document" .源代码 7
1 ?设计的任务
1设计编写一个C程序一“万年历”。
2输入任一年将显示出该年的所有月份日期,对应的星期。
3下一行显示星期,从周日到周六,中英文都可以。
4下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数 垂直对齐。
5月份:中文英文都可以,注意闰年情况。
对问题的分析理解
1要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式, 如下:
the cale ndar of the year2008.
January
Sun
Mon Tue Wed Thu Fri
1 2
3
4
5
6
7
8
9 10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
February
Sun Mon Tue Wed Thu Fri Sat
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
34567
8
9
2 判断是不是闰年(year%4!=0||year%100==0&&year%400!=0)满足条件就是 平年,把一年中的所有月份分为四类(28, 29, 30, 31)。
2.3 求出一年中的第一天是周几 (year
+(year-1)/4-(year-1)/100+(year-1)/400)%7。
4有指针数组存放十二个月的英文和星期的英文缩写。
5用FO循环输出各月份的日历
(a+m)%7==0Yn==2&&m==28Yn==3&&m==29Ni++,i<4YYn==4&&m==30YNj++,j<7YN输出k++,k
(a+m)%7==0
Y
n==2&&m==28
Y
n==3&&m==29
N
i++,i<4
Y
Y
n==4&&m==30
Y
N
j++,j<7
Y
N
输出
k++,k
Y
N
m++,m<3
输入年份,year
a=(yea 叶(year-1)/4-(year-1)/100+(year-1)/400)%7
3.采用的算法(流程图)
输岀回车
输岀占六个字节的天数
输岀月份回车
输岀星期回车
输岀六个空格
定义整型变 year,i=0,j=0,a,n,m=1,k=0 和函数 judge
定义两个字符型数组,month,week
定义一个指针变量**p
n=judge(year,i+1),p=month+i
break,退出本次循环
break,退出本次循环
break,退出本次循环
a=(a+m)%7 回车
开始
结束
算法中涉及的知识点
4. 1定义整型,字符型,指针变量,字符型数组和指针数组。数组的初始化和引用
和指针的使用
4. 2函数的定义、声名、调用以及函数的返回值。
4. 3程序的三种基本结构:顺序,选择,循环。if语句的嵌套,for语句的嵌 套。
4. 5赋值语句的使用。
4. 6输入(scant)输出(printf) 函数的应用。
7算术运算符、关系运算符和逻辑运算符的应用。
设计用的计算机环境
WindowsXP,Turboc2.0 和 Microsoft Visual C++ 6.0
结论
6.1经过运行和调试得到了想要的结果一“万年历”,任意输入一个年份能按当 初设计的格式输出每个月份的日历。
6.2对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般 法方步骤。最大的收获是,编写程序时一定要有信心和勇气, 要相信自己一定可 以把这个程序编写出来。分析问题做出算法,想好思路,在心里有个大致的框架, 然后按部就班的记下自己想到的每一点内容, 把写下的东西认真整理,查缺补漏,
把一些细节