C语言程序设计万年历
C语言实现万年历程序

week=(sum+1)%7; //表示该年1月1日为星期几
if(year(y)==366) days[1]=29;
printf("\n%d年日历如下:\n\n",y);
for(i=0;i<12;i++) { printf(" %d月 \n",i+1); printf(" 7 1 2 3 4 5 6\n"); printf("=====================\n"); begin=1; for(j=0;j<week;j++) printf(" "); while(begin<=days[i]) { printf("%3d",begin); begin++; week=(week+1)%7; if(week%7==0) printf("\n"); } printf("\n\n");
这篇文章主要介绍了visualstudio2000系列版本安装opengl的图文教程本文通过图文并茂的形式给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值需要的朋友可以参考下
C语 言 实 现 万 年 历 程 序
本文实例为大家分享了C语言实现万年历程序,供大家参考,具体内容如下
#include <stdio.h>
}
return 0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
c语言万年历程序

#include <stdio.h>#include <stdlib.h>#include <ctype.h>int leap (int year) ;//判断是否为闰年int days_month (int month,int year) ;//判断这个月的天数int menu_select();/*void f(){int day,month,year,sum,leap,S;printf("\n请输入年月日\n");scanf("%d%d%d",&year,&month,&day);switch(month){case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day;if(year%400==0||(year%4==0&&year%100!=0))leap=1;else leap=0;if(leap==1&&month>2)sum++;S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; //X表示年份,C是该年份元旦开始到这一日的天数//S/7的系数就是星期数//01printf("%d",S);switch(S){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 0:printf("星期日\n");break;}}*/int Leap(int year){ int leap;if(year%400==0||(year%4==0&&year%100!=0))leap=1;else leap=0;return leap;}int SU(int sum,int year){int S;S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7;return S;}int Sum(int year,int month,int day=1){int sum,leap;switch(month){case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day;leap=Leap(year);if(leap==1&&month>2)sum++;return sum;}void Print(int S){switch(S){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 0:printf("星期日\n");break;}}void Fun1(){int day,month,year,sum,S;printf("\n请输入年月日\n");scanf("%d%d%d",&year,&month,&day);sum=Sum(year,month,day);S=SU(sum,year);Print(S);}void Fun2(){int i,j=1,k=1,a,b,month,year,sum;printf("\n 输入年月:\n");scanf("%d%d",&year,&month);b=days_month(month,year);sum=Sum(year,month);a=SU(sum,year);printf("*************************************\n");printf(" Sun Mon Tue Wed Thu Fri Sat \n");if(a==7){for(i=1;i<=b;i++){printf("%4d",i);if(i%7==0){printf("\n");}}}if(a!=7){while (j<=4*a){printf(" ");j++;}for(i=1;i<=b;i++){printf("%4d",i);if(i==7*k-a){printf("\n");k++;}}}printf("\n*************************************\n");printf("\n");}int days_month (int month,int year){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31;if(month==4||month==6||month==9||month==11)return 30;if(month==2&&Leap(year)==1) return 29;else return 28;}void main(){for(;;){switch(menu_select()){case 1:printf("输入年月日计算该月第一天是星期几\n");Fun1();break;case 2:printf("打印任意日历\n");Fun2();break;case 3:printf("谢谢使用!\n");exit(0);}}}int menu_select(){ system("cls");char s;int cn;printf("1. 输入年月日计算该月第一天是星期几\n");printf("2. 打印任意日历\n");printf("3.谢谢使用! \n");printf("input 1-3:");do {s=getchar();cn=(int)s-48;}while(cn<0||cn>6);return cn;}。
C语言课程设计--万年历

C 语言课程设计报告设计题目:万年历学生姓名:学生学号:专业班级:数学与应用数学一班学院名称:数学与计量经济学院同组人姓名:指导老师:2011年6月15 日1 需求分析1.1问题描述我们需要实现万年历的功能,那么如何实现这个功能呢?我们都很清楚,普通年份和闰年是有区别的,那么该怎么区分这种一天的差别对于万年历日期现实的影响呢?而且已知一个日期,那么我们怎么能够知道它是星期几?是不是需要一个参照物来比较呢?而且还有很多关于万年历的美化问题,占位符的考虑等等。
另外我们还必须判断输入的万年历是否合法,这也需要一个子函数来实现。
好吧,至于基础的判断闰年也是不在话下了。
1.2输入数据要求我们要考虑三种情况,这三种情况下是不能够实现这个万年历的功能的:/*如果给定的日期中年份部分为非正数*/if(date.year<=0)printf("年份不符合要求!\n"printf("请重新输入)/*如果给定的日期中月份部分为负数,为0或者大于12*/if(date.month>12||date.month<1)printf("月份不符合要求!\n");printf("请重新输入");getchar();exit(0);/*如果给定的日期中天数部分为非正数,或者大于31*/a[2]=28+leap(date.year);if(date.day>a[date.month]||date.day<1)printf("日期不符合要求!\n");printf("请重新输入");getchar();exit(0);1.3输出数据要求根据输入数据,输出数据必须严格的按照占位符进行逻辑的策划,然后得知一行万年历的日期的占位符是38个占位符,于是空格占位符和字符显示出来的那些占位符就需要有一个限定使得其不凌乱特别应该注意空格符的占位。
C语言课程设计 万年历

计算机基础课程设计C语言设计报告题目:万年历学院:电气与电子工程学院专业:自动化班级:070304姓名:于洋指导教师:周丽娟设计日期:一、设计题目及来源万年历,来自网上搜索。
二、功能isLeap()判断输入数据是否是闰年;maxDay()判断某年某月最多天数;eachYearTotal ()判断这一天是该年的第几天;week判断某年某月某日的编号;output()输出该天星期几;display()显示月历;check()检查有效性;display1()输出年历;display2()输出月历;display3()输出日历;getMenu()调菜单;三、流程图#include<stdio.h>#include<stdlib.h>int isLeap(int year);int maxDay(int year,int month);int eachYearTotal(int year,int month,int day); int week(int year,int month,int day);char *chineseWeek(int number);void output(int year,int month,int day);void display(int year,int month);int check(int year,int month,int day);void display1(int year);void display2(int year,int month);void display3(int year,int month,int day); void getMenu();void main(){int year,month,day,flag,select;while(1){getMenu();printf("shu ru xuan ze: ");fflush(stdin);scanf("%d",&select);fflush(stdin);switch(select){case 1:do{printf("shu ru nian: ");scanf("%d",&year);flag=check(year,1,1);if(flag==0){printf("shu ru wu xiao\n");}}while(flag==0);display1(year);break;case 2:do{printf("shu ru nian yue: ");scanf("%d%d",&year,&month);flag=check(year,month,1);if(flag==0){printf("shu ru wu xiao\n");}}while(flag==0);display2(year,month);break;case 3:do{printf("shu ru nian yue ri: ");scanf("%d%d%d",&year,&month,&day);flag=check(year,month,day);if(flag==0){printf("shu ru wu xiao\n");}}while(flag==0);display3(year,month,day);break;case 4:exit(0);default:printf("shu ru you wu!\n\n");}}}int isLeap(int year){if(year%4==0&&year%100!=0||year%400==0) return 1;elsereturn 0;}int maxDay(int year,int month){int a[]={31,28,31,30,31,30,31,31,30,31,30,31};if(isLeap(year))a[1]=29;return a[month-1];}int eachYearTotal(int year,int month,int day){int i,sum=0;for(i=1;i<month;i++){sum+=maxDay(year,i);}sum+=day;return sum;}int week(int year,int month,int day){intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachYearTotal(year,month,d ay);number%=7;return number;}char *chineseWeek(int number){switch(number){case 0:return "Sunday";case 1:return "Monday";case 2:return "Tuesday";case 3:return "Wednesday";case 4:return "Thursday";case 5:return "Friday";case 6:return "Saturday";default:return "error";}}void output(int year,int month,int day){int number=week(year,month,day);printf(" gong yuan%d nian%d ue%d ri%10s\n\n",year,month,day,chineseWeek(number)); }void display(int year,int month){int max,number,i,j=1;max=maxDay(year,month);number=week(year,month,1);printf("%4s%4s%4s%4s%4s%4s%4s\n"," Sunday "," Monday "," Tuesday "," Wednesday "," Thursday "," Friday "," Saturday ");for(i=0;i<number;i++){printf(" ");}while(j<=max){printf("%4d",j);if(i%7==6){printf("\n");}i++;j++;}printf("\n\n");}int check(int year,int month,int day){if(year<0||month<1||month>12||day<1||day>maxDay(year,month))return 0;elsereturn 1;}void display1(int year){int i;printf("\n");for(i=1;i<=12;i++){printf(" gongyuan%d nian%d yue\n\n",year,i); display(year,i);}}void display2(int year,int month){printf("\n gongyuan%d nian%d yue\n\n",year,month); display(year,month);}void display3(int year,int month,int day){printf("\n");output(year,month,day);display(year,month);}void getMenu(){printf("1.nianli\t2.yueli\t3.rili\t4.tuiqu\n");}。
C语言程序设计报告《万年历》

《“万年历”》—C语言程序设计报告专业:计算机科学与技术班级:姓名:指导教师:年月日目录1.设计的任务 (3)2.对问题的分析理解 (3)3. 采用的算法(流程图) (5)4. 算法中涉及的知识点 (6)5.设计用的计算机环境 (6)6 结论 (6)7.源代码 (7)1.设计的任务1.1设计编写一个C程序—“万年历”。
1.2输入任一年将显示出该年的所有月份日期,对应的星期。
1.3 下一行显示星期,从周日到周六,中英文都可以。
1.4 下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。
1.5 月份:中文英文都可以,注意闰年情况。
2.对问题的分析理解2.1 要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下:the calendar of the year2008.JanuarySun Mon Tue Wed Thu Fri Sat1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31FebruarySun Mon Tue Wed Thu Fri Sat1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29=============================================…………2.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。
2.4 有指针数组存放十二个月的英文和星期的英文缩写。
2.5 用FOR循环输出各月份的日历3. 采用的算法(流程图)开始定义整型变year,i=0,j=0,a,n,m=1,k=0和函数judge 定义一个指针变量**p定义两个字符型数组,month,week输入年份,yeara=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7i++,i<4n=judge(year,i+1),p=month+i输出月份回车Nj++,j<7输出星期回车k++,k<a输出六个空格m++,m<3输出占六个字节的天数(a+m)%7==0YY N输出回车n==2&&m==28YYn==3&&m==29break,退出本次循环break,退出本次循环n==4&&m==30break,退出本次循环Na=(a+m)%7回车输出”==============”结束NYYY Y4.算法中涉及的知识点4.1 定义整型,字符型,指针变量,字符型数组和指针数组。
C语言课程设计万年历 完整版

目录一引言 (2)二系统功能和数据说明 (3)一)功能简介 (3)二)程序中的数据说明 (3)三程序总体设计及流程图 (4)一)应用到的c语言 (4)二)程序的总框架 (5)四功能模块设计及调试 (5)一)算法说明 (5)1.总天数的算法 (5)2.计算输入日期是星期几 (6)3.对输入信息的汇总 (8)4..界面的控制 (10)二)调试结果 (11)五程序清单 (12)六结束语 (17)一引言通过大一上学期对C语言的学习,了解到了很多C语言的相关知识。
学习的过程有很多困惑但是当自己能够独立的看懂,能过独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。
我可以里哟哦那个它看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对探究的兴趣。
C语言是近年在国内外得到迅速推广应用的一种语言。
C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。
因此,C语言特别适合于编写各种软件。
在这次的课程设计中我将把日常生活中最经常接触的——日期的查询利用C语言的程序编成一个简单的日历。
通过这个小小的日历可以实现很多功能。
在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。
在不断的调试中最终才获得最为完整的程序。
接下来就是我的C 语言课程设计的具体内容来了二系统功能和数据说明(一)功能简介在我们的日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简介明了的给我们最想要的日期信息。
在我的万年历当中,就是将日历,月历做的简单明了,很方便我们的使用。
下面是它要实现的一些基本功能:用C语言编写万年历1、输入年份,判断是否为闰年2、输入年月日,判断改日为星期几3、输入年份,打出12个月历,输入月份,打出该月的日历4、要求用多个函数实现[名称]万年历[修改]1、对输入的日期进行容错处理2、增加和修改为英文的月份和星期显示3、采用指针形式的weeks和month数组(二)程序中的数据说明①int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};这是定义的关于每个月天数的数组,根据大小月以及二月分的特殊情况将每个月的天数最为数组中的元素存入数组当中。
万年历系统——C语言完整版

实验十九:编写一个万年历系统1.设计目的:从实验的角度来看,这次课程设计一方面可以让自己巩固并加深对C语言程序设计知识的理解,掌握和提高C语言编程和程序的基本调试的基本技能,进一步理解和运用结构化程序的思想和方法;另一方面,可以让自己在面对一个全新的问题时,学会如何思考,如何寻找问题的关键,从而提升自己的能力。
2.总体设计:1.、当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几);2、当系统日期变到下一个月时,系统自动翻页到下一月。
3.调试与测试:4.源程序清单和执行结果:#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h>int leap(int year ){if ((year %4 == 0) && (year % 100 != 0)|| (year % 400 == 0)){return 1;}return 0;}void show(int year,int month,int date,int sec,int mini,int hour) {const char month_str[][4]={"","Jan","Feb","Mar","Apl", "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i,j,wdays,mdays,days;for(i=1,days=0;i<year;i++){if(leap(i)){days += 366;}else{days += 365;}}for(i=1;i<month;i++){if(i==2 && leap(year)){days+=29;}else{days+=month_day[i];}}printf(" %s.%d.%d %d:%d:%d \n",month_str[month],date,year,hour,mini,sec);printf(" 一二三四五六日\n");wdays = days % 7;for( j = 0; j < wdays; j++){printf(" ");}if(month == 2 && leap(year)){mdays=29;}else{mdays= month_day[month];}for(i=1;i<=mdays;i++){if( i > 1 && days % 7 == 0 ){Printf(“\n”);printf("\n");}printf("%4d",i);days=days+1;}printf("\n---------------------------\n\n\n");}void main(){time_t rawtime;struct tm *info;int year,month,date,sec,mini,hour; char ch;time ( &rawtime );info = localtime ( &rawtime );year =info->tm_year + 1900; month =info->tm_mon + 1;date =info->tm_mday;hour =info->tm_hour;mini =info->tm_min;sec =info->tm_sec;while(1){show(year,month,date,sec,mini,hour); printf("↑......上一年\n\n");printf("↓......下一年\n\n");printf("←....前一个月\n\n");printf("→....后一个月\n\n");printf("Esc.......退出\n\n");ch=getch();switch(ch){case 27://Ecsexit(0);case -32://Navigatorch=getch();if(ch==77){//Rightyear+=(month==12)?1:0;month=month%12+1;}else if(ch==75){//Leftyear-=(month==1)?1:0;month=(month-2+12)%12+1;}else if(ch==72) {//Upyear--;}else if(ch==80) {//Downyear++;}system("cls"); }}}。
万年历c语言课程设计

万年历 c语言课程设计一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握日期与星期之间的转换关系。
2. 学生能够运用C语言中的数据类型、运算符和函数实现日期的计算。
3. 学生掌握结构体在C语言中的应用,并能利用结构体数组存储和管理大量日期数据。
技能目标:1. 学生能够运用所学知识,设计并编写一个简单的万年历程序,实现日期的输入、输出及查询功能。
2. 学生能够在编写程序的过程中,运用结构化编程思想,使代码具有可读性和可维护性。
3. 学生能够通过调试和修改程序,解决实际问题,提高编程解决问题的能力。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,增强学习C语言的自信心。
2. 学生在团队合作中,学会互相帮助、沟通与协作,培养团队精神。
3. 学生通过编程实践,体会计算机科学在生活中的应用,认识到编程对解决实际问题的价值。
本课程针对高中年级学生,结合C语言编程知识,设计具有实用性和趣味性的万年历项目。
课程旨在让学生在实际编程过程中,掌握C语言的基本语法和编程技巧,提高解决问题的能力,同时培养团队协作和沟通能力。
通过本课程的学习,为学生奠定扎实的编程基础,激发他们对计算机科学的兴趣。
二、教学内容1. C语言基础语法复习:变量、数据类型、运算符、控制语句(条件语句、循环语句)。
2. 函数的定义与调用:重点复习函数的定义格式、参数传递、返回值。
3. 结构体的定义与应用:介绍结构体的概念、定义方法以及如何使用结构体数组。
4. 日期与星期的计算方法:讲解日期与星期之间的转换公式,引导学生理解算法。
5.万年历程序设计:a. 界面设计:设计简洁明了的用户界面,方便用户输入和查看日期。
b. 功能实现:实现日期的输入、输出、查询(按年月查询、按日期查询)。
c. 程序优化:讨论如何优化代码,提高程序运行效率。
d. 错误处理:学习如何处理用户输入错误、日期有效性验证等。
教学内容参考教材相关章节,按照以下进度安排:1. 第一课时:C语言基础语法复习,引入结构体概念。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计报告题目:万年历系统设计者:吕阳 110703112胡杰 110703111卢太林 110703110专业班级:动物生物技术1101班指导教师:刘立俊2012年6月7日武汉工业学院动物科学与营养工程学院目录一、C语言课程设计任务书 (3)1、C语言课程设计目的和要求 (3)1.1目的: (3)1.2要求: (3)二、本组课题及本人任务 (3)三、程序功能简介 (4)四、主题内容 (4)1、题目与要求 (4)1.1 问题提出 (4)1.2 本系统涉及的知识点 (5)1.3 功能要求 (5)2、功能设计 (6)2.1 算法设计 (6)3、程序流程图.. (8)4、程序代码设计 (9)4.1输入及年份平润确定模块 (9)4.2求星期天数模块 (9)4.3求月份天数模块 (11)4.4查询模块 (11)4.5输出及验证模块 (12)4.6说明: (12)5、C程序设计总结 (12)6、结束语 (13)参考文献 (13)一、C语言课程设计任务书1、C语言课程设计目的和要求1.1目的:1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。
1.2要求:1)、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2)、系统设计要实用,编程简练,可用,功能全面3)、说明书、流程图要清楚4)、记录设计情况(备查,也为编写设计说明书作好准备);5)、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。
6)、设计上交内容:设计报告一份(按格式书写);源程序盘一张(能编译成可执行文件并能正常运行,可一个班交一张光盘)。
二、本组课题及本人任务经考虑及尝试,本人决定选择题目2.2编写一个万年历系统,完成对日期的查询输出。
1设计编写一个C程序—“万年历”。
2输入任一年将显示出该年的所有月份日期,对应的星期。
3 下一行显示星期,从周日到周六,中英文都可以。
4 下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。
5 月份:中文英文都可以,注意闰年情况。
三、程序功能简介模仿现实生活中的挂历.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月.四、主题内容1、题目与要求1.1 问题提出本人计划编写一个万年历查询系统,模仿现实生活中的挂历,实现多日期的变更了解。
1.2 本系统涉及的知识点1. 程序的三种基本结构:顺序,选择,循环。
if语句的嵌套,for语句的嵌套。
2. 定义整型,字符型,指针变量,字符型数组和指针数组。
数组的初始化和引用和指针的使用。
3. 函数的定义、声名、调用以及函数的返回值。
4. 赋值语句的使用。
5. 输入(scanf)输出(printf)函数的应用。
6. 算术运算符、关系运算符和逻辑运算符的应用。
1.3 功能要求1、建立日历基础信息,输入当前日期时间为本系统时间基数;2、根据年份平润规律得出所要了解年份的平润;3、以每七天为一个循环的规律得出星期天数;4、根据月份天数规律得出所要了解月份天数;5、输入日期查询;6、输出。
2、功能设计2.1 算法设计1、本系统需要实现的功能要求:利用switch语句设计如图1所示的主菜单:请输入选项编号(1~7)图1 日历查询系统主菜单2、选择3后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数。
图2 排序子菜单3、根据所选菜单编写相应模块图1)通过switch 函数求出星期天数;2)通过switch 函数求出月份天数;3)输入日期查询;4)输出及验证。
3、程序流程图(成立)(不成立)4、程序代码设计4.1输入及年份平润确定模块1)函数原形:void count(int year, int month)2)功能:利用if循环语句和count、leap函数完成对基数日期的输入和对所要了解的日期所在年份的平润。
3)模块源代码:#include <stdio.h>#define YEAR 365int leap(int year){int n;n=(year%4==0&&year%4!=0||year%400==0);return(n);}void count(int year, int month) /*基:2000年1月*/{int i,day,first_day,flag,year1,year2,temp=6;flag=leap(year);year1=year/100; /*相差几百年*/year2=year%100; /*中间几十年*/if(year>=2000) /*大于2000年*/{year1-=20;day=year1/4; /*百闰年数*/day+=(YEAR+24)*year1+YEAR*year2+(year2-1)/4; /*2000年至现年总天数*/if(year>2000)day++; /*加上2000年闰年2月的29天*/4.2求星期天数模块1)函数原型:switch(month)2)功能:利用switch语句完成万年历中对星期天数的求解。
3)模块源代码:switch(month){case 1:day+=0;break;case 2:day+=31;break; /*加上月份天数*/case 3:day+=59+flag;break;case 4:day+=90+flag;break;case 5:day+=120+flag;break;case 6:day+=151+flag;break;case 7:day+=181+flag;break;case 8:day+=212+flag;break;case 9:day+=243+flag;break;case 10:day+=273+flag;break;case 11:day+=304+flag;break;case 12:day+=334+flag;break;}day+=temp; /*加上2000年1月1号是星期六*/ first_day=day%7; /*对7取余,为1号星期*/}else /*以下25行,计算<2000年,算法同上*/ {year1=20-1-year1;year2=100-year2-1; /*倒减,应多减1*/day=year1/4;day+=36524*year1+365*year2+year2/4; switch(month){case 12:day+=31;break;case 11:day+=61;break;case 10:day+=92;break;case 9:day+=122;break;case 8:day+=153;break;case 7:day+=184;break;case 6:day+=214;break;case 5:day+=245;break;case 4:day+=275;break;case 3:day+=306;break;case 2:day+=334+flag;break;case 1:day+=365+flag;break;}day-=temp; /*减去1号的6天*/day=day%7;first_day=(7-day)%7; /*反对称*/}4.3求月份天数模块1)函数原型:switch(month)2)功能:利用switch、fot循环语句实现万年历中对每月天数的求解以及万年历基本信息的输出。
3)模块源代码:switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:month=31;break;case 4:case 6:case 9:case 11:month=30;break;case 2:month=28+flag;}printf(" SUN MON TUE WED THU FRI SAT\n");for(i=1;i<=4*first_day;i++) /*输出空格*/printf(" ");for(i=0;i<month;i++){printf("%4d",i+1); /*输出日历*/if((first_day+i)%7==6)printf("\n");}printf("\n");}4.4查询模块1)函数原型:void main()2)功能:利用main函数实现对输入日期的查询。
3)模块源代码:void main(){int year,i;printf("please input year :\n");4.5输出及验证模块1)函数原型:void main()2)功能:利用for、while语句和for、count函数实现查询结果的输出及验证。
3)模块源代码:while(scanf("%d",&year)!=1){printf("输入错误,请重新输入");fflush(stdin);}for(i=1;i<13;i++){printf("month:%d\n",i);count(year,i);}getch();}4.6说明:执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。
5、C程序设计总结1.程序调试情况;程序经过多次调试,最终运行正常。
输入数据,得出正确结果。
2.本人在程序设计中感想,收获:通过本次试验设计,我对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。
最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。
分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了(其实编程并不难,关键是要投入,要钻到里面去)。
下一步就是读程序了,读程序时一定要小心仔细,一条语句一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为至。