万年历C语言报告1
更新时间:2023-12-07 21:52:01 阅读量: 教育文库 文档下载
万年历实验报告 ---软件工程
老师:班级:学号:姓名:
- 1 -
实验题目:编制一个万年历程序
要求:输入一个年份(1-3000),然后显示12个月的月历,如屏幕显示不下,则应提供翻页功能。
一. 实验目的
通过实例使同学们掌握结构化数据流分析技术。
二. 实验内容
软件需求分析:
1.总体而言,根据老师的要求来做一个万年历的C程序,要求分页输出每个月的月历,首先输入想要知道日历的年份,然后可按ENTER键逐月显示日历,这样就可以达到要求了。
2. 判断是不是闰年:(year%4==0&&year0||year@0==0)满足条件是闰年,把一年中所有月份的天数放入二维数组({{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}})。
3. 求出一年中的第一天是周几 (year +(year-1)/4-(year-1)/100+(year-1)/400)%7。 4. 用FOR循环输出各月份的日历。
数据流图:
将每月的日期填入日期表 程序开始 f(),g(),n(),w() 利用 for 循环分月输出日期 定义函数 定义整型变year, w,leap,i,j,k,wd,day wd判断该月日历有几行显示 定义两个字符型数组date[12][6][7], day_tbl[ ][12] for循环输出该月日历 输入年份year leap=year%4==0&&year0||year@0==0 scanf(\回车翻页 利用for循环将日期表置0 显示完12月份 结束程序 - 2 -
软件设计与编码:
实验完整代码:
#include \
long int f(int year,int month) {
if(month<3) return year-1; else return year; }
long int g(int month) {
if(month<3) return month+13; else return month+1; }
long int n(int year,int month,int day) {
return 1461L*f(year,month)/4+153L*g(month)/5+day; }
int w(int year,int month,int day) {
return(int)((n(year,month,day)%7-621049L%7+7)%7); }
int date[12][6][7];
int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}};
main() {
int sw,leap,i,j,k,wd,day; int year;
char title[]=\ printf(\请输入您想要知道万年历的年份: \输入年*/ scanf(\输入年份值和掠过值后的回车*/ sw=w(year,1,1);
leap=year%4==0&&year0||year@0==0;/*判闰年*/ for(i=0;i<12;i++) for(j=0;j<6;j++)
for(k=0;k<7;k++)
date[i][j][k]=0;/*日期表置0*/ for(i=0;i<12;i++)/*一年十二个月*/
- 3 -
for(wd=0,day=1;day<=day_tbl[leap][i];day++) {/*将第i+1月的日期填入日期表*/ date[i][wd][sw]=day;
sw=++sw%7;/*每星期七天,以0至6计数*/
if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/ }
printf(\年的年历 ===========|\\n\
for(i=0;i<12;i++)
{/*先测算第i+1月的最大星期数*/
for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/ wd+=date[i][5][k]+date[i+6][5][k]; wd=wd?6:5;
puts(\
printf(\月 %s |\\n|\ for(j=0;j printf(\ \ for(k=0;k<7;k++) if(date[i][j][k]) printf(\ else printf(\ \ printf(\ \ printf(\ } puts(\ scanf(\键入回车输出下一个月的日历*/ } puts(\ puts(\按任意键退出...\ getch(); } 截图: - 4 - - 5 - 三. 总结 1. 实验内容总结 经过运行和调试得到了想要的结果——“万年历”,任意输入一个年份能按当初设计的格式输出每个月份的日历。 2. 心得体会与建议 在这次实验中了解了C语言在编写程序时的用处,懂得了编写C程序的一般法方步骤。通过这次实验,我掌握了以前没有学好的知识,虽然这次学会了很多知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了。 - 6 - 三. 总结 1. 实验内容总结 经过运行和调试得到了想要的结果——“万年历”,任意输入一个年份能按当初设计的格式输出每个月份的日历。 2. 心得体会与建议 在这次实验中了解了C语言在编写程序时的用处,懂得了编写C程序的一般法方步骤。通过这次实验,我掌握了以前没有学好的知识,虽然这次学会了很多知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了。 - 6 -
正在阅读:
万年历C语言报告112-07
培训发言稿11-07
弱电工程进度计划及保障措施10-21
java扫雷需求规格说明书10-04
简历模板大全--重庆交通大学封面简历模板--(简历+封面+自荐信-word精美简历)原创作品01-18
成人本科学位英语考试词组表04-21
精神病学考试含答案01-18
2016-2022年中国航天航空产品市场现状研究分析与发展趋势预测报告04-28
国泰安培训学习心得12-14
《高级英语》课程考试大纲08-17
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 万年历
- 语言
- 报告
- 高中英语人教版必修一至五及选修六至十一单词
- 2019福建农信社招聘-金融机构有关的论述题该如何作答?
- 2010年考研英语一作文预测范文十篇
- 关于调整城市建筑渣土处理费标准的通知甬价费〔2009〕119号09.11.24
- 区块链+人工智能打造智慧城市
- 数字城市概论讲义-新 - 图文
- 语文人教版三年级下册路旁的橡树教案
- 湖北省北大附中武汉为明实验学校2015-2016学年九年级上册 化学第四单元测试题2(人教版)
- 监理1
- 妇联干部作风建设年活动讲话
- 2018版高中语文苏教版必修五学案:专题一+专题写作+科学之光+Word版含答案高品质版
- §15《测算家庭电费说起》正式版
- 初中生作文语言存在的问题及对策-精品文档
- 中国加密防伪市场发展研究及投资前景报告(目录) - 图文
- 现代心理和教育统计学课后题
- 让写字教学变得鲜活有趣-精选教育文档
- 概率论与数理统计期末应用题专项训练
- 华中师大《高等几何》练习题库及答案
- 称重式皮带给煤机技术规范书
- 九年级语文上册 20 香菱学诗学案 新人教版