浅谈使用C语言实现日历程序的编写

来源 :新校园·理论版 | 被引量 : 0次 | 上传用户:wuming66666666
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:校本教材是高职高专院校课程改革的产物,学生通过所学课程能够做到学有所用,解决现实生活中的问题。本文通过日历程序的编写,使学生能从整体上把握C语言的基础知识,并掌握顺序、选择、循环三种基本结构,达到较好的教学效果。
  关键词:基础;结构化;软件开发
  
  一、引 言
  任何一个程序的基本开发过程都是大同小异的。就算简单的只有几行的小程序,也需要完整的结构,一般包括:问题描述、需求分析、概要设计、详细设计、程序代码和调试运行6个大的阶段。由于日历程序比较小,可以将6个阶段整合为3个。
  二、程序的开发
  阶段1——分析阶段
  随意给出某年某月(如2010年10月),可以显示该年的日历(包括每月的天数和所对应的星期)。此阶段的实现思路是全面分析问题,对实际问题进行抽象,完成需求分析并抽象出程序的基本需求。
  1.输入年份和月份,判断输入的年份是否为闰年。
  2.以1900年1月1日星期一为标准,计算从1900年到year年1月1日的天数。
  3.判断每个月的天数days。
  4.计算year年month月1日距离1900年1月1日的天数。
  5.确定year年month月的第一天为周几。
  6.输出日历。
  


  图1
  阶段2——设计阶段
  此阶段主要根据阶段1的分析,得到程序开发的详细过程。
  1.输入要查看的年份year和月份month,判断输入的年份是否为闰年,目的是通过判断的结果判断每一年的天数和每个月的天数。在此阶段中最先要做的就是需要year、leap和month三个整型的变量,其中leap作为标识变量。判断某一年是否为闰年的条件只要满足下列二者之一即可:
  ①年份能够被4整除,且不被100整除;
  ②年份能够被4整除,且能被400整除。
  代码如下:
  if(year%4==0&&year%100!=0||year%400==0)
  leap=1;
  else leap=0;
  2.以1900年1月1日星期一为标准,计算从1900年到year年month月1日的天数。分三步走:
  第一步:计算从1900年1月1日到year年1月1日的前一天的天数。在这一步中,需要定义整型变量i作为循环变量、整型变量totaldays用来表示总天数。其中需要for语句来循环表示从1900到year年之间的时间段,用if语句来判断是否为闰年。如果是闰年,每年366天;如果不是闰年,每年365天。
  第二步:计算从year年1月1日到year年month月1日前一天的天数,如图2。这就需要对每个月的天数进行判断,天数需要用整型变量days表示。大月31天,小月30天,闰年的2月是29天,非闰年的2月是28天,这需要用switch语句来实现。
  


  图2
  第三步:将第一步、第二步中所计算的天数进行计算,即将totaldays和days相加后赋值给totaldays。
  3.计算year年month月的第一天是周几,用整型变量firstdayofmonth来表示。用计算得到的总天数除以7取余加1,用整型变量temp表示。如果结果为7,那么month月的第一天是周日,firstdayofmonth=0;如果结果不是7,那么month月的第一天firstdayofmonth=temp。
  4.是否添加空格。如果month月的第一天是周日,不需要添加空格,如果不是周日,需要输出空格,空格个数由temp决定。
  示例代码:
  temp=totaldays%7+1;
  if(temp= =7)
  firstdayofmonth=0;
  else firstdayofmonth=temp;
  5.输出最后的日历。在输出时需要考虑如果遇到周六,需要换行,否则只需将两天之间用空格隔开即可。
  for(k=0;k  printf(" ");
  for(m=1;m<=days;m++)
  if(1+(totaldays+m-1)%7==6)
  printf(“%d “,m);
  else printf(“%d “,m);
   阶段3——调试运行阶段
  在程序不断调试过程中,程序成功运行,运行结果如图3:
  


   图3
  三、结语
  学生在完成日历程序编写的过程中,复习了变量的定义、顺序结构、选择结构、循环结构等基础知识,掌握了软件开发的主要步骤,培养了学生分析问题、解决现实问题的能力。
  
  参考文献:
  [1]谭浩强.C语言程序设计[M].北京:清华大学出版社,2010.
  [2]曹衍龙.C语言实例解析精粹[M].北京:人民邮电出版社,2007.
其他文献
对我国利率杠杆作用机制的考察与重塑郝继伦,李淑彪市场经济体制的确立和市场金融的成长,要求利率在经济运行中发挥有效、灵敏的杠杆作用。但在我国现行体制下,利率的杠杆作用却
心搏骤停常发生于心内直视手术中或手术后,我院心胸外科截至2001年底在645例心内直视手术中,曾遇手术后心搏骤停11例,占同期心内直视手术的1.7%,初期复苏11例均成功,其中8例
摘 要:笔者结合在教学中的体会,对初中生物课改实践中影响课堂教学的有效性因素进行了分析,并就如何提高课堂教学的有效性,充分调动学生学习积极性等方面作了思考,以期全面提高学生的生物科学素养。  关键词:初中生物;课堂教学;有效性  随着新课改的实施,教师的教学观念、课堂教学模式以及学生的学习行为等方面均发生了重大的变革。教学中倡导学生进行探究性学习,培养学生的自主创新能力,让学生主动接受新知识等新的
【正】星期天中午,吃过中饭,我像往常一样把奶奶扶到沙发上,拿起《健康周报》,准备读给奶奶听。突然,奶奶从沙发上站起来,挺了挺腰,用手捶起来。可是一个踉跄,差点儿摔倒。我
期刊
目的:报告小切口胆囊切除术的手术方法及体会.方法:回顾分析1120例小切口胆囊切除术的临床资料.结果:全组手术成功1076例(96.07%),延长切口44例(3.93%),总的并发症发生率为1.
新课改倡导双主体课堂教学模式,这种课堂教学模式认为:教师教的主导作用,只有在学生主动参与的过程中才能落实和体现。因此,如何激发学生的学习兴趣,让学生参与教学已成为提高思想品德课教学效果的重要环节。在教学实践中,教师只要做有心人,就能借助多种手段激发学生的学习兴趣,提高课堂教学效果。  兴趣是人的心理特征之一,它是一种积极的情绪状态,是学生学习的“催化剂”、“助推器”。因此,课堂教学的成功与否,在很