C语言打印日历运算结果
打印日历实验报告
一、实验目的1. 熟悉C语言的编程环境及开发工具的使用。
2. 学习使用C语言实现日历打印功能。
3. 提高编程能力,培养实际问题的解决能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容1. 理解日历的基本概念和计算方法。
2. 设计日历打印程序,实现以下功能:(1)输入年份,自动计算该年是否为闰年。
(2)根据输入的年份,计算该年1月1日是星期几。
(3)打印出该年的日历,包括年、月、日、星期。
3. 优化程序,提高运行效率。
四、实验步骤1. 分析日历的基本概念和计算方法。
(1)闰年:能被4整除但不能被100整除,或者能被400整除的年份。
(2)平年:不能被4整除,或者能被100整除但不能被400整除的年份。
(3)星期计算:根据输入的年份和月份,计算出该年1月1日是星期几。
可以使用蔡勒(Zeller)公式进行计算。
2. 设计日历打印程序。
(1)定义变量:年份、月份、星期、日期等。
(2)编写函数:判断闰年、计算星期、打印日历等。
(3)主函数:接收用户输入的年份,调用函数计算并打印日历。
3. 优化程序。
(1)优化判断闰年的函数,提高效率。
(2)优化计算星期的函数,减少计算量。
(3)优化打印日历的函数,提高可读性。
五、实验结果1. 编写程序,实现日历打印功能。
2. 测试程序,验证功能是否正常。
3. 输入年份,打印出该年的日历。
六、实验总结1. 通过本次实验,熟悉了C语言的编程环境及开发工具的使用。
2. 学习了使用C语言实现日历打印功能,提高了编程能力。
3. 在实验过程中,遇到了一些问题,如判断闰年的效率、计算星期的准确性等。
通过查阅资料、分析问题,成功解决了这些问题。
4. 在优化程序方面,通过优化判断闰年、计算星期和打印日历的函数,提高了程序的运行效率。
5. 本次实验有助于提高实际问题的解决能力,为今后的编程实践奠定了基础。
C语言万年历代码
屌神NO.1#include <stdio.h>#include <stdlib.h>#include <stdlib.h>#include <conio.h> /清屏函数的头文件*/#define X " Sun Mon Tue Wed Thu Fri Sat"void menu();int getday(int year,int month,int date);int isleap(int year);void print(int n);int day(int year);void printcalendar(int year);void menu(){system("cls"); /*清除屏幕上所有文字*/printf("\nTHIS IS THE MENU OF THE PROGRAM !");printf("\nYOU CAN CHOOSE THE NUMBER FOR THE FUNCTIOM:");printf("\n\n");printf("1 Find the day by year-month-date.\n");printf("2 Find out whether the year you input is a leap year.\n");printf("3 Print the calendar of the year you input.\n");printf("4 Exit.\n\n");printf("Input your choice:");}/*函数定义,将在主函数中调用*/int getday(int year,int month,int date){int isleap(int year);int flag,s,i;int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int cont=0;flag=isleap(year);if(flag==1){a[2]++; /*修改二月份天数*/}for(i=1;i<month;i++){cont=cont+a[i];}cont=cont+date;s=year+1+(year-1)/4+(year-1)/100+(year-1)/400+cont;return s%7;}/*利用公式求星期几*/int isleap(int year){if(year%4==0&&year%100||year%400==0){return 1;}else{return 0;}}/*判定闰年*/void print(int n){int i;for(i=0;i<n;i++) printf(" ");}/*打印空格,排版使用*/int day(int year){long a,b;if(year<=2000){a=2000-year;b=6-(a+a/4-a/100+a/400)%7;return b;}else{a=year-2000;b=(a+1+(a-1)/4-(a-1)/100+(a-1)/400)%7+6;return b%7;}}/*打印日历函数*/void printcalendar(int year){int i,j,k,m,n,f1,f2,d;int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("\nThe calendar of the year %d.\n\n",year);d=day(year);if(isleap(year)==1){a[2]++;}for(i=1;i<=12;i+=2){m=0; n=0; f1=0; f2=0;switch(i){case 1:printf(" Januray 1 ");break;case 3:printf(" March 3 ");break;case 5:printf(" May 5 ");break;case 7:printf(" July 7 "); break;case 9:printf(" September 9 ");break;case 11:printf(" Nevember 11 ");break;}print(21); /*打印空格,隔开奇偶月份名*/switch(i+1){case 2:printf(" February 2 "); break;case 4:printf(" April 4 "); break;case 6:printf(" June 6 "); break;case 8:printf(" August 8 "); break;case 10:printf(" October 10 "); break;case 12:printf(" December 12"); break;}printf("\n");printf(X); /*宏调用,打印星期字符串*/print(6); /*打印空格,隔开奇偶月份数据*/printf(X);printf("\n");for(j=0;j<6;j++){if(j==0){print(d*4); /*每个日期数采用个空格的宽度,即4字节。
c语言年月日输出格式
在C语言中,可以使用`strftime`函数来格式化日期和时间。
以下是一个示例,展示如何将当前日期和时间以年月日的格式输出:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
printf("当前的本地时间和日期: %d-%02d-%02d\n", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday);
return 0;
}
```
在这个例子中,我们首先获取当前时间(`time(&rawtime)`),然后将其转换为本地时间(`localtime(&rawtime)`)。
`structtm`结构体中
的`tm_year`,`tm_mon`和`tm_mday`字段分别代表年、月和日。
我们可以通过加1900来获取完整的年份(因为`tm_year`是从1900年开始计数的),通过加1来获取正确的月份(因为`tm_mon`是从0开始计数的)。
最后,我们使用`printf`函数来输出格式化的日期。
C语言实训--万年历源代码
C语言实训--万年历源代码# include#include#include#include#include# define YEAR 365int numday[2][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}};int leap(int year);int calday(int y,int m);int counterdays(int year,int month,int day);int week(int year,int month,int day);int eachyeartotal(int year,int month,int day);int maxDay(int y,int month);void print(int y,int m,int w);void festival (int year,int month,int day);int IsLeap(int y);int guanli(int i);void rili(int year,int month);int rili1();void rili2();void rili3();void rili4();void rili5();void fan();void show(int year,int month,int date,int sec,int mini,int hour);int main(){int i;printf("***************************************\n"); printf("1.查询日历,输入年份:\n");printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n");printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n");scanf("%d",&i);guanli(i);return 0;}int guanli(int i){switch(i){case 1:rili1();return main();case 2:rili2();return main();case 3:rili3();return main();case 4:rili4();return main();case 5:rili5();return main();}return 0;}int rili1(){int year;int n,i;printf("输入年份:");scanf("%d",&year);printf("the calendar of the year%d\n",year);printf("\n");printf("=============================\n"); for(i=1;i<13;i++){printf(" %d月份\n",i);rili(year,i);}n = leap(year);return 0;}void rili2(){int year,month,w;printf("输入年月:");scanf("%d%d",&year,&month);w=calday(year,month);print(year,month,w);}void rili3(){int year,month,day,number;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day);festival(year,month,day);number= week(year,month,day);printf("星期%d",number);}void rili4(){int year,month,day;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day); eachyeartotal( year,month,day);counterdays(year,month,day);}void rili5(){int year,month,date,sec,mini,hour;fan();show(year,month,date,sec,mini,hour);}int leap(int year){int n=(year%4==0 && year%100!=0 || year%100!=0); return n;}void rili(int year,int month){int i,day,first_day,flag,year1,year2;int temp = 6;flag =leap(year);year1=year/100;year2=year%100;if(year>2000){year1=year1-20;day = year1/4;day+=(YEAR+24)*year1+YEAR*year2+(year2-1)/4;if(year>2000)day++;switch(month){case 1:day; 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;first_day=day%7;}else{year1 = 20-1-year;year2=100-year2-1;day+=(YEAR+24)*year1+YEAR*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;day = day%7;first_day=(7-day)%7;}switch(month){case 1:case 2:month=28+flag;break; case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:month=30;break; case 12:month =31;break;}for(i=1;i<4*first_day;i++) printf(" ");for(i=0;i<month;i++)< p="">{printf("%4d",i+1);if((first_day+i)%7==6)printf("\n");}printf("\n");printf("===============================\n");}///////////////////////////////////////////////////////////int counterdays(int year,int month,int day){int year1,days0,days1,month1,days,day1;time_t timep;struct tm*p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year);month1=(1+p->tm_mon);day1=(p->tm_mday);days0=(year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400 +eachyeartotal (year,month,day);days1=(year1 - 1)*365+(year1-1)/4-(year1-1)/100 + (year1 - 1)/400 +eachyeartotal (year1,month1,day1);days=days0-days1;printf("\n今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}int eachyeartotal(int year,int month,int day){int i,sum=0;for(i=1;i<month;i++)< p="">{sum+=maxDay(year,i);}sum+=day;return sum;}int IsLeap(int y){if(y%4==0 && y%100!=0 || y%400==0) return 1; else return 0;}int maxDay(int y,int month){int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(IsLeap(y))a[1]=29;return a[month-1];}///////////////////////////////////////void festival (int year,int month,int day){if (month==1 && day==1) printf (",这天是元旦");if (month==2 && day==14) printf (",这天是情人节"); if (month == 3)switch(day){case 8:printf (",这天是妇女节"); break;case 12:printf (",这天是植树节");}if (month==1 && day==1) printf (",这天是愚人节");if(month == 5)switch (day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if (month==6 && day==1) printf (",这天是儿童节");if (month==7 && day==1) printf (",这天是建党节");if (month==8 && day==1) printf (",这天是建军节");if (month==9 && day==10) printf (",这天是教师节");if (month==10 && day==1) printf (",这天是国庆节");printf("\n");}int week(int year,int month,int day){int number = (year-1)+(year-1)/4 - (year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number = number%7;return number;}/////////////////////////////////////////////void print(int y,int m,int w){int i,l;printf("Calendar %d-%02d\n",y,m);printf("---------------------\n");printf("Su Mo Tu We Th Fr Sa \n");printf("---------------------\n");for (i=0;i<w;i++)< p=""> printf(" ");if (IsLeap(y))l=1;elsel=0;for (i=1;i<=numday[l][m-1];i++) {printf("%-3d",i);w++;if (w%7==0)printf("\n");}if (w%7) printf("\n");printf("---------------------\n"); }int calday(int y,int m){int d=0,w;while (y>1910){if (IsLeap(y)) d+=366;else d+=365;y--;}while (m>1){ --m;d+=numday[0][m-1];}w=(d+1)%7;return w;}//////////////////////////////////////////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++)< p="">{if(leap(i))days += 366;}else{days += 365;}}for(i=1;i<month;i++)< p="">{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("%4d",i);days=days+1; }printf("\n---------------------------\n\n\n");}{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");pr intf("→....后一个月\n\n");printf("Esc.......退出\n\n");ch=getch();switch(ch){case 27://Ecs exit(0);case -32://Navigatorch=getch();if(ch==77){//Rightyear+=(month==12)?1:0;month=month%12+1;}else if(ch==75){year-=(month==1)?1:0; month=(month-2+12)%12+1; }else if(ch==72)year--;else if(ch==80)year++;system("cls");}}</month;i++)<></year;i++)<></w;i++)<></month;i++)<></month;i++)<>。
C语言编程:输入任意一个年份和月份,输出该月份的公历日历
//⑴程序功能描述: 输入任意一个年份和月份,按以下格式输出该月份的公历日历。
// 要求由程序计算出来该月份的1日是星期几,并用循环控制打印.// 打印样例如下:// 2012年日历// ========================================// 9月// ----------------------------------------// 日一二三四五六// 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// ----------------------------------------//⑵程序版本号: 1.0 创作日期: 2012.5.11//⑶作者信息描述:班级:国经贸1105 姓名:陈君君学号:1111141169//⑷问题分析描述: 1.判断某一年是否为闰年的条件是:a.年份能否被4整除,但不能被100整除;b.年份能被400整除;// 2.公元1年到year年共有(y-1)年,其中天数为:(y-1)*365+闰年的个数.//⑸算法设计描述:1.根据year,计算2月份的天数;// 2.计算year年1月1日到1年1月1日中间闰年的个数;// 3.计算year年1月1日到1年1月1日的天数,存入变量d1;// 4.计算year年month月1日到year年1月1日的天数,存入变量d2;// 5.计算year年month月1日是星期几,存入变量weekday;// 6.计算year年month月的天数,存入变量d3.//⑹关键语句注释说明:1.recount为year年1月1日到1年1月1日中间闰年的个数;// 2.d1为year年1月1日到1年1月1日的天数;// 3.d2为year年month月1日到year年1月1日的天数;// 4.weekday为year年month月1日是星期几;// 5.d3为year年month月的天数.//⑺调试运行过程中出现的错误及改正方法:“recount”错写为“rcount”,应写为“recount”//⑻输入数据样例:2012 9// 输出数据样例:// 2012年日历// ========================================// 9月// ----------------------------------------// 日一二三四五六// 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// ----------------------------------------#include <stdio.h>void main(){int y,m,i,d1,d2,d3,w,n=0,recount=0;int t[]={31,28,31,30,31,30,31,31,30,31,30,31};//输入year年和month月printf("请输入年和月:");scanf("%d%d",&y,&m);//根据year,计算2月份的天数if(y%4==0&&y%100!=0||y%400==0)t[1]=29;//计算year年1月1日到1年1月1日中间闰年的天数recount=(y-1)/4-(y-1)/100+(y-1)/400;//计算year年1月1日到1年1月1日的天数,存入变量d1d1=(y-1)*365+recount;//计算year年month月1日到year年1月1日的天数,存入变量d2d2=0;for(i=0;i<m-1;i++)d2+=t[i];//计算year年month月1日是星期几,存入变量weekdayw=(d1+d2+1)%7;//计算year年month月的天数,存入变量d3d3=t[m-1];//输出“表头”printf("%23d年日历\n",y);printf("===================================================\n"); printf("%23d月\n",m);printf("---------------------------------------------------\n");printf("日\t一\t二\t三\t四\t五\t六\n");//输出1日前的空格printf("\t");//输出所有日期,7个一行for(i=1;i<=d3;i++){printf("%d\t",i);if((i+w)%7==0)printf("\n");}printf("\n--------------------------------------------------\n");}。
C语言课程设计《打印月历》(完整版)
《C 语言课程设计》 课程设计报告安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University题 目《打印月历》学 号 姓 名 年级专业 指导教师 完成日期年月日一、问题描述及基本要求:1)年份和月份由键盘输入,打印的月历按星期一到星期日排列;2)注意大小月,闰年等问题。
二、程序分析和具体设计设计难点:1.程序难点在于判断每月的第一日为星期几,但根据蔡勒公式,可以很容易地有年月日推断出星1)s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;2)return ((int)s%7);3)year:要查询的年份;4)s:从该年的一月一日起到该天的天数;5)s%7:得出的星期数,s%7==0表示星期天;在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过定长度输出日期,在遇到某天时星期六时,就换行输出,因此可以按照月历的格式输出;2.闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年;大小月的判断,闰年的第二月为29天,平年的第二月为30天;3.判断日期是否合法,可以先判断年月日是否有小于0的值,月和日是否有超出最大值12和31 ,如果通过此判断合法,再判断是否时闰年,如果时闰年,则判断二月份是否满足要求,闰年二月份不能超过29天,平年二月份不能超过28天。
在查询过程中,如果发现输入不合法或者不满足输入要求,则要求重新输入。
设计思路1)第一步:判断输入是否合法;int dayExame(int year,int month,int day)2)第二步:判断是否为闰年;int IsLeapYear(int year)3)第三步:判断二月份天数;int month_day(int year,int month) 4)第四步:计算每月第一天的星期;int DaySearch(int year,intmonth,int day)5)第五步:按月历格式输出;int PrintYearmonth(int year,intmonth)6)第六步:整合;void main()三、结构图:四、流程图#include<stdio.h>int dayExame(int year,int month,int day) {if(year<0||month<1||month>12)return 0;else return 1;}int LeapYear(int year){if((year%4==0&&year%100!=0)||(year%400==0)) return 1;elsereturn 0;}int month_day(int year,int month){int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; if( LeapYear(year)&&month==2)return 29;elsereturn(mon_day[month-1]);}int DaySearch(int year,int month,int day){int c=0;float s;int m;for(m=1;m<month;m++)c=c+month_day(year,m);c=c+day;s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/40 0-40+c;return ((int)s%7);}int PrintYearmonth(int year,int month){int temp;int i,j;printf("\n%d年%d月\n",year,month);temp=DaySearch(year,month,1);printf("星期一星期二星期三星期四星期五星期六星期天\n"); for(j=1;j<month_day(year,month)+temp;j++){if(j-temp<0)printf(" ");elseprintf("%3d ",j-temp+1);if(j%7==0)printf("\n");}return 0;}void main(){int year,month;printf("请输入年:");scanf("%d",&year);printf("请输入月:");scanf("%d",&month);printf("日历---某某&&某某制作\n");printf("_____________________________________\n");PrintYearmonth(year,month);}六、测试数据及程序运行结果七、参考书目1:谭浩强著. C程序设计(第三版).北京:清华大学出版社,2005 2:谭浩强编著.QBASIC语言教程.北京:电子工业出版社,1997 3:谭浩强编著.C++程序设计.北京:清华大学出版社,20044:谭浩强,田淑清编著.PASCAL语言课程设计(第二版).北京:高等教育出版社,19985:Schildt H 著.戴建鹏译.C语言大全(第二版).北京:电子工业出版社,1994八、课程设计结束语经过半年C语言的学习,收获不少,通过实验课的实践,深刻体会到C语言的重要性。
c++万年历及公历农历转换源代码2
#include <stdio.h>#include <stdlib.h>#include <conio.h>#define X " Sun Mon Tue Wed Thu Fri Sat"#define P printf#define B break#define FP fprintfstruct date /*日期*/{int year;int month;int date;};struct taglunarcal /**/{int basedays;int intercalation;int monthdays[13];}dalist[]={{31,8,0,1,0,0,1,0,1,1,0,1,1,0,1},{50,0,0,1,0,0,1,0,1,0,1,1,1,0,0},{39,0,1,0,1,0,0,1,0,1,0,1 ,1,1,0},{29,5,0,1,0,1,0,0,1,0,0,1,1,0,1},{47,0,1,1,0,1,0,0,1,0,0,1,1,0,0},{35,0,1,1,0,1,1,0,0,1,0,1,0,1,0},{25,4,0,1,1,0,1,0,1,0,1,0,1,0,1},{4 4,0,0,1,0,1,0,1,1,0,1,0,1,0,0},{33,0,1,0,0,1,1,0,1,0,1,1,0,1,0},{22,2,0,1,0,0,1,0,1,0,1,1,1,0,1},{41,0,0,1,0,0,1,0,1,0,1,1,1,0,0},{3 0,6,1,0,1,0,0,1,0,0,1,1,0,1,1},{49,0,1,0,1,0,0,1,0,0,1,1,0,1,0},{37,0,1,1,0,1,0,0,1,0,0,1,0,1,0},{26,5,1,1,0,1,0,1,0,1,0,1,0,0,1},{4 5,0,1,0,1,1,0,1,0,1,0,1,0,1,0},{35,0,0,1,0,1,0,1,1,0,1,0,1,0,0},{23,2,1,0,0,1,0,1,1,0,1,1,0,1,0},{42,0,1,0,0,1,0,1,0,1,1,0,1,1,0},{3 2,7,0,1,0,0,1,0,0,1,1,0,1,1,1},{51,0,0,1,0,0,1,0,0,1,1,0,1,1,0},{39,0,1,0,1,0,0,1,0,0,1,0,1,1,0},{28,5,1,0,1,1,0,0,1,0,0,1,0,1,1},{4 7,0,0,1,1,0,1,0,1,0,0,1,0,1,0},{36,0,0,1,1,0,1,1,0,1,0,1,0,0,0},{24,4,1,0,1,0,1,1,0,1,1,0,1,0,1},{44,0,0,0,1,0,1,0,1,1,0,1,1,0,0},{3 3,0,1,0,0,1,0,1,0,1,0,1,1,1,0},{23,2,0,1,0,0,1,0,0,1,0,1,1,1,1},{41,0,0,1,0,0,1,0,0,1,0,1,1,1,0},{30,6,0,1,1,0,0,1,0,0,1,0,1,1,0},{4 8,0,1,1,0,1,0,1,0,0,1,0,1,0,0},{37,0,1,1,1,0,1,0,1,0,0,1,0,1,0},{26,5,0,1,1,0,1,1,0,1,0,1,0,0,1},{45,0,0,1,0,1,1,0,1,0,1,1,0,1,0},{3 5,0,0,0,1,0,1,0,1,1,0,1,1,0,0},{24,3,1,0,0,1,0,0,1,1,0,1,1,1,0},{42,0,1,0,0,1,0,0,1,0,1,1,1,0,0},{31,7,1,1,0,0,1,0,0,1,0,1,1,0,1},{5 0,0,1,1,0,0,1,0,0,1,0,1,0,1,0},{39,0,1,1,0,1,0,1,0,0,1,0,1,0,0},{27,6,1,1,0,1,1,0,1,0,0,1,0,1,0},{46,0,1,0,1,1,0,1,0,1,0,1,0,1,0},{3 6,0,0,1,0,1,0,1,1,0,1,0,1,0,0},{25,4,1,0,1,0,1,0,1,0,1,1,0,1,1},{44,0,0,0,1,0,0,1,0,1,1,1,0,1,0},{33,0,1,0,0,1,0,0,1,0,1,1,0,1,0},{2 2,2,1,1,0,0,1,0,0,1,0,1,0,1,1},7,0,1,0,1,1,0,1,0,1,0,1,0,1,0},{27,5,0,1,0,1,0,1,0,1,1,0,1,0,1},{45,0,0,1,0,0,1,1,0,1,1,0,1,0,0},{34,0,1,0,1,0,0,1,0,1,1,0,1,1,0},{2 4,3,0,1,0,1,0,0,1,0,1,0,1,1,1},{43,0,0,1,0,1,0,0,1,0,1,0,1,1,0},{31,8,1,0,1,0,1,0,0,1,0,1,0,1,0},{49,0,1,1,1,0,1,0,0,1,0,1,0,1,0},{3 9,0,0,1,1,0,1,0,1,0,1,0,1,0,0},{28,6,1,0,1,0,1,1,0,1,0,1,0,1,0},{46,0,1,0,1,0,1,0,1,1,0,1,0,1,0},{36,0,0,1,0,0,1,0,1,1,0,1,1,0,0},{2 5,4,1,0,1,0,0,1,0,1,0,1,1,1,0},{44,0,1,0,1,0,0,1,0,1,0,1,1,1,0},{33,0,0,1,0,1,0,0,1,0,0,1,1,0,0},{21,3,1,1,1,0,1,0,0,1,0,0,1,1,0},{4 0,0,1,1,0,1,1,0,0,1,0,1,0,1,0},{30,7,0,1,0,1,1,0,1,0,1,0,1,0,1},{48,0,0,1,0,1,0,1,1,0,1,0,1,0,0},{37,0,1,0,0,1,0,1,1,0,1,1,0,1,0},{2 7,5,0,1,0,0,1,0,1,0,1,1,1,0,1},{46,0,0,1,0,0,1,0,1,0,1,1,0,1,0},{34,0,1,0,1,0,0,1,0,0,1,1,0,1,0},{23,4,1,1,0,1,0,0,1,0,0,1,1,0,1},{4 2,0,1,1,0,1,0,0,1,0,0,1,0,1,0},{31,8,1,1,0,1,0,1,0,1,0,0,1,0,1},{49,0,1,0,1,1,0,1,0,1,0,1,0,0,0},{38,0,1,0,1,1,0,1,1,0,1,0,1,0,0},{2 8,6,1,0,0,1,0,1,1,0,1,1,0,1,0},{47,0,1,0,0,1,0,1,0,1,1,0,1,1,0},{36,0,0,1,0,0,1,0,0,1,1,0,1,1,0},{25,4,1,0,1,0,0,1,0,0,1,0,1,1,1},{4 4,0,1,0,1,0,0,1,0,0,1,0,1,1,0},{33,0,1,0,1,1,0,0,1,0,0,1,0,1,1},{51,0,0,1,1,0,1,0,1,0,0,1,0,1,0},{40,0,0,1,1,0,1,1,0,1,0,1,0,0,0},{2 9,6,1,0,1,0,1,1,0,1,1,0,1,0,0},{48,0,1,0,1,0,1,0,1,1,0,1,1,0,0},{37,0,1,0,0,1,0,0,1,1,0,1,1,1,0},{27,5,0,1,0,0,1,0,0,1,0,1,1,1,1},{4 6,0,0,1,0,0,1,0,0,1,0,1,1,1,0},{35,0,0,1,1,0,0,1,0,0,1,0,1,1,0},{23,3,0,1,1,0,1,0,1,0,0,1,0,1,0},{41,0,1,1,1,0,1,0,1,0,0,1,0,1,0},{3 1,8,0,1,1,0,1,0,1,1,0,0,1,0,1},{50,0,0,1,0,1,1,0,1,0,1,1,0,0,0},{38,0,1,0,1,0,1,0,1,1,0,1,1,0,0},{28,5,1,0,0,1,0,0,1,1,0,1,1,0,1},{4 7,0,1,0,0,1,0,0,1,0,1,1,1,0,0},{36,0,1,1,0,0,1,0,0,1,0,1,1,0,0},{24,4,1,1,0,1,0,1,0,0,1,0,1,0,1},{43,0,1,1,0,1,0,1,0,0,1,0,1,0,0},{3 2,0,1,1,0,1,1,0,1,0,0,1,0,1,0},{22,2,0,1,0,1,1,0,1,0,1,0,1,0,1},{40,0,0,1,0,1,0,1,1,0,1,0,1,0,0},{29,7,1,0,1,0,1,0,1,0,1,1,0,1,1},{4 9,0,0,0,1,0,0,1,0,1,1,1,0,1,0},{38,0,1,0,0,1,0,0,1,0,1,1,0,1,0},{26,5,1,1,0,0,1,0,0,1,0,1,0,1,1},{45,0,1,0,1,0,1,0,0,1,0,1,0,1,0},{4 5,0,1,0,1,1,0,1,0,0,1,0,1,0,0},{23,4,1,0,1,1,1,0,1,0,1,0,1,0,1},{41,0,1,0,1,0,1,1,0,1,0,1,0,1,0},{31,9,0,1,0,1,0,1,0,1,1,1,0,1,1},{5 0,0,0,1,0,0,1,0,1,1,1,0,1,0,0},{39,0,1,0,1,0,0,1,0,1,1,0,1,1,0},{28,6,0,1,0,1,0,0,0,1,0,1,1,1,0},{47,0,0,1,0,1,0,0,1,0,1,0,1,1,0},{3 6,0,1,0,1,0,1,0,0,1,0,0,1,1,0},{25,4,0,1,1,1,1,0,0,1,0,1,0,1,1},{43,0,0,1,1,0,1,0,1,0,1,0,1,0,0},{32,0,1,0,1,0,1,1,0,1,0,1,0,1,0},{2 2,2,0,1,0,1,1,0,1,1,0,1,0,1,1},{41,0,0,1,0,0,1,0,1,1,0,1,1,0,0},{29,6,1,0,1,0,0,1,1,0,1,1,1,0,1},{48,0,1,0,1,0,0,1,0,0,1,1,1,0,0},{3 7,0,1,1,0,1,0,0,1,0,0,1,1,0,0},{26,5,1,1,1,0,1,0,1,0,0,1,1,0,1},{44,0,1,1,0,1,0,1,0,1,0,0,1,1,0},{34,0,0,1,0,1,1,0,1,0,1,0,1,0,0},{2 3,3,0,1,1,1,0,1,1,0,1,0,1,0,1},{42,0,1,0,0,1,0,1,1,0,1,1,0,1,0},{31,7,0,1,0,0,1,0,1,1,1,1,0,1,1},{50,0,0,1,0,0,1,0,1,0,1,1,0,1,0},{3 9,0,1,0,1,0,0,1,0,0,1,1,0,1,0},4,5,1,1,0,1,1,1,0,1,0,1,0,0,1},{43,0,1,0,1,1,0,1,0,1,1,0,1,0,0},{32,0,0,1,0,1,0,1,1,0,1,1,0,1,0},{22,2,0,1,0,1,0,1,0,1,1,0,1,1,1},{4 1,0,0,1,0,0,1,0,0,1,1,0,1,1,0},{30,7,1,0,1,0,0,1,0,1,0,1,1,1,0},{48,0,1,0,1,0,0,1,0,0,1,0,1,1,0},{37,0,1,0,1,0,1,0,1,0,0,1,0,1,0},{2 6,5,1,0,1,1,0,0,1,0,0,1,0,1,0},{45,0,0,1,1,0,1,1,0,1,0,0,1,0,0},{33,0,1,0,1,0,1,1,0,1,1,0,1,0,0},{23,3,0,1,0,0,1,0,1,1,0,1,1,0,0},{4 2,0,1,0,0,1,0,0,1,1,0,1,1,1,0},{32,8,0,1,0,0,1,0,0,1,1,1,1,1,1},{50,0,0,1,0,0,1,0,0,1,0,1,1,1,0},{39,0,0,1,1,0,0,1,0,0,1,0,1,1,0},{2 8,6,0,1,1,0,1,0,0,0,1,0,1,0,0},{46,0,1,1,1,0,1,0,1,0,0,1,0,1,0},{35,0,0,1,1,0,1,0,1,1,0,0,1,0,0},{24,4,1,0,1,0,0,1,1,0,1,1,0,0,0},{4 3,0,1,0,1,0,1,0,1,0,1,1,1,0,0},{33,0,1,0,0,1,0,0,1,0,1,1,1,0,0},{21,3,1,1,0,1,0,0,1,0,1,1,1,0,0},{40,0,1,1,0,0,1,0,0,1,0,1,1,0,0},{2 9,7,1,1,0,1,0,1,0,1,0,1,0,1,0},{48,0,1,1,0,1,0,1,0,0,1,0,1,0,0},{36,0,1,1,0,1,1,0,1,0,0,1,0,1,0},{26,5,0,1,0,1,1,1,0,1,0,1,0,1,1},{4 5,0,0,1,0,1,0,1,1,0,1,0,1,0,0},{34,0,1,0,1,0,0,1,1,0,1,1,0,1,0},{23,4,0,1,0,1,0,1,0,1,1,1,0,1,1},{42,0,0,1,0,1,0,0,1,0,1,1,0,1,0},{3 1,8,1,0,1,0,1,0,0,1,1,0,1,1,1},{50,0,1,0,1,0,1,0,0,1,0,1,0,1,0},{38,0,1,0,1,1,0,1,0,0,1,0,1,0,0},{27,6,1,0,1,1,0,1,1,0,1,0,1,0,1},{4 6,0,1,0,1,0,1,1,0,1,0,1,0,1,0},{36,0,0,1,0,1,0,1,0,1,1,0,1,0,0},{24,4,1,0,1,0,1,0,1,1,1,0,1,0,0},{43,0,1,0,1,0,0,1,0,1,1,0,1,1,0},{3 3,0,0,1,0,1,0,0,1,0,1,0,1,1,0},{22,3,1,0,1,1,0,0,1,0,0,1,1,1,1},{40,0,0,1,1,0,1,0,0,1,0,0,1,1,0},{29,7,0,1,1,1,0,0,1,1,0,0,1,1,1},{4 8,0,0,1,1,0,1,0,1,0,1,0,1,0,0},{37,0,1,0,1,0,1,1,0,1,0,1,0,1,0},{26,5,0,1,0,0,1,0,1,1,0,1,0,1,1},{45,0,0,1,0,0,1,0,1,1,0,1,1,0,0},{3 4,0,1,0,1,0,0,1,0,1,0,1,1,1,0},{24,4,0,1,0,1,0,1,0,0,1,1,1,0,1},{41,0,1,1,0,1,0,0,1,0,0,1,1,0,0},{30,8,1,1,1,0,1,0,0,1,0,1,1,0,1},{4 9,0,1,1,0,1,0,1,0,1,0,0,1,0,0},{38,0,1,1,0,1,1,0,1,0,1,0,1,0,0},{27,6,0,1,1,0,1,0,1,0,1,0,1,0,0},{46,0,0,1,0,1,0,1,1,0,1,1,0,1,0},{3 6,0,0,1,0,0,1,0,1,0,1,1,1,0,0},{25,4,1,0,1,0,1,0,0,1,1,1,0,1,0},{43,0,1,0,1,0,0,1,0,0,1,1,0,1,0},{32,0,1,0,1,0,0,0,0,1,0,1,0,1,0},{2 1,2,1,1,1,1,0,0,1,0,0,1,0,1,1},{40,0,1,1,0,1,0,1,0,1,0,0,1,0,0}};getleap( int year ) /*1代表闰年*/{if ( year % 400 == 0 )return 1;else if ( year % 100 == 0 )return 0;else if ( year % 4 == 0 )return 1;elsereturn 0;}print(int n){int i;for(i=0;i<n;i++) printf(" ");}int day(int year){long a,b;if(year<=2000){a=2000-year;b=6-(a+a/4-a/100+a/400)%7; return b;}else{a=year-2000; b=(a+1+(a-1)/4-(a-1)/100+(a-1)/400)%7+6; return b%7; }}solardate(struct date * input) /*公历年第几天*/{int i,number=0,solarcal[12]={31,28,31,30,31,30,31,31,30,31,30,31}; number=getleap(input->year);for(i=0;i<input->month-1;i++){number+=solarcal[i];}return number+input->date;}lunardate(struct date *input)/*农历年第几天*/{int i,leap=0,number=0;if(dalist[input->year-1900].intercalation==0)leap=0;else if(input->month==dalist[input->year-1900].intercalation){printf(" 0 not leap month\n 1 leap month");scanf("%d",&leap);}else if(input->month>dalist[input->year-1900].intercalation) leap=1;for(i=0;i<input->month+leap-1;i++)number+=dalist[input->year-1900].monthdays[i]+29;return number+input->date;}lunarmonth(int year,int *mon){int i,j;mon[0]=dalist[year].monthdays[0]+29;for(i=1,j=1;i<12;i++,j++){if(i==dalist[year].intercalation){mon[i-1]+=dalist[year].monthdays[j]+29;j++;}mon[i]=mon[i-1]+dalist[year].monthdays[j]+29;}}main(){int i,j,k,m,n,f1,f2,year,d,y,ly,cord,greday,lunday,diff,add,leap,tlylm[12],lastylm[12],a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},SolarDays[2][12] = {{31,59,90,120,151,181,212,243,273,304,334,365},{31,60,91,121,152,182,213,244,274,305,335, 366}};char fname[12]={"0"}; FILE *fw;struct date input;do{printf("\n--------------------------------------------\n");printf(" 请选择");printf("\n--------------------------------------------\n");printf(" 1 公历转换成农历");printf("\n--------------------------------------------\n");printf(" 2 农历转换成公历");printf("\n--------------------------------------------\n");printf(" 3 万年历");printf("\n--------------------------------------------\n");printf(" 4 退出");printf("\n--------------------------------------------\n");printf("\n 请选择: 1,2,3,4\n");scanf("%d",&cord);clrscr();switch(cord){case 1:{printf("\n(公历) 请输入年.月.日(yyyy.mm.dd) \n");scanf("%d.%d.%d",&input.year,&input.month,&input.date);/*输入年月日*/y=input.year;greday=solardate(&input);/*公历年第几天*/diff=greday-dalist[y-1900].basedays;if(diff>0)lunarmonth(y-1900,tlylm);else{y-=1;lunarmonth(y-1900,tlylm);diff+=tlylm[11];}for(i=0;tlylm[i]<diff;i++);if(i!=0)diff-=tlylm[i-1];printf("(农历) %d.%d.%d",y,i+1,diff);break;}clrscr();case 2:{printf("\n(农历) 请输入年.月.日(yyyy.mm.dd) \n");scanf("%d.%d.%d",&input.year,&input.month,&input.date);y=input.year;ly=getleap(y);lunday=lunardate(&input);/*农历年第几天*/add=lunday+dalist[y-1900].basedays;if(add-365+ly>0){add-=365+ly;y+=1;}for(i=0;SolarDays[ly][i]<add;i++);if(i!=0)add-=SolarDays[ly][i-1];printf("(公历) %d.%d.%d",y,i+1,add);break;}case 3:{system("cls");P(" 请输入你所要查看的年份:");scanf("%d",&year);fw=fopen(fname,"w+");if(fw==NULL){P(" can not open file."); return;}P(" The calendar of the year %d.\n",year);FP(fw,"The calendar of the year %d.\n",year);d=day(year);if(year%4==0&&year%100||year%400==0) a[2]++;for(i=1;i<=12;i+=2){m=0; n=0; f1=0; f2=0;switch(i){case 1:P(" Januray 1 "); FP(fw," Januray 1 "); B; case 3:P(" March 3 "); FP(fw," March 3 "); B; case 5:P(" May 5 "); FP(fw," May 5 "); B; case 7:P(" July 7 "); FP(fw," July 7 "); B; case 9:P(" September 9 "); FP(fw," September 9 "); B; case 11:P(" Nevember 11 "); FP(fw," Nevember 11 "); B; }print(21);for(k=0;k<21;k++) fprintf(fw," ");switch(i+1){case 2:P(" February 2 "); FP(fw," February 2 ");B; case 4:P(" April 4 "); FP(fw," April 4 ");B;case 6:P(" June 6 "); FP(fw," June 6 ");B; case 8:P(" August 8 "); FP(fw," August 8 "); B; case 10:P(" October 10 "); FP(fw," October 10 ");B; case 12:P(" December 12"); FP(fw," December 12");B;}P("\n");fprintf(fw,"\n");P(X); fprintf(fw,X); print(6);fprintf(fw," "); P(X); fprintf(fw,X);fprintf(fw,"\n"); P("\n");for(j=0;j<6;j++){if(j==0){print(d*4); for(k=0;k<d*4;k++) fprintf(fw," ");for(k=0;k<7-d;k++){P("%4d",++m); fprintf(fw,"%4d",m);}print(6); fprintf(fw," ");d+=a[i]%7; d%=7;print(d*4); for(k=0;k<d*4;k++) fprintf(fw," ");for(k=0;k<7-d;k++){P("%4d",++n); fprintf(fw,"%4d",n);}P("\n"); fprintf(fw,"\n");}else{for(k=0;k<7;k++){if(m<a[i]){P("%4d",++m); fprintf(fw,"%4d",m);}else{print(4); fprintf(fw,"");}if(m==a[i]) f1=1;}print(6); fprintf(fw," ");for(k=0;k<7;k++){if(n<a[i+1]){P("%4d",++n);fprintf(fw,"%4d",n);}else{print(4); fprintf(fw,"");}if(n==a[i+1]) f2=1;}P("\n"); fprintf(fw,"\n");if(f1&&f2) B;}}d+=a[i+1]%7; d%=7; P(" "); fprintf(fw," "); if(i==5){getch();system("cls");}}fclose(fw);getch();break;}case 4:{exit(0);}}}while(cord<=4);}。
C语言万年历代码
else if(ch=='n'||ch=='N')
{ month+=1;
if(month>12) {month=1;year+=1;}
}
printf("\t\t********e退出 p上一月 n下一月********");
}
void first_set(int *year,int *month)
{ do{
printf ("please input the year(1~9999):");
if (choose=='y'||choose=='Y') main();
}
days_of_month(int x,int y)
{
int z;
switch (y)
{case 1:
case 3:
case 5:
case 7:
case 8:
printf ("please input the month(1~12):");
scanf ("%d",month);
if(*month<1||*month>12) printf ("WANNING:ERROR,please input again!\n");
printf ("\n\n********************************************************************************\n\n");
自己做的日历(C语言)
本帖最后由 kekeyu 于 2010-8-15 16:59 编辑
打印某个月的日历c++代码
打印某个月的日历c++代码按如下格式打印日历:#include#includeusing namespace std;typedef enum {SUN,MON,TUE,WED,THU,FRI,SAT} WEEKDAY;int main(){int date[31],i,j,k;const WEEKDAY date_1=FRI;WEEKDAY weekday;for(i=0;i<=30;i++)date[i]=i+1;cout << "Calendar 2006-12"<< endl;cout << "--------------------------\n";cout << "Su Mo Tu We Th Fr Sa\n";cout << "--------------------------\n";for(i=0;i<=30;i++){weekday = (WEEKDAY)((date[i]+(int)date_1-1) % 7); //(int)date_1=5,这个容易搞错j=(date[i]+(int)date_1-1) / 7; //某个日期date[i]所对应的行号,第一行j=0if(j>0) //第二行以后的输出格式{switch(weekday){case SUN:cout << setw(2) << date[i];break;case MON:cout << setw(4) << date[i];break;case TUE:cout << setw(4) << date[i];break;case WED:cout << setw(4) << date[i];break;case THU:cout << setw(4) << date[i];break;case FRI:cout << setw(4) << date[i];break;case SAT:cout << setw(4) << date[i];cout << "\n";break;}}if(i==0 && j==0) //第一行第一天的输出格式{ switch(weekday){cout << setw(2) << date[i];break;case MON:cout << setw(6) << date[i];break;case TUE:cout << setw(10) << date[i];break;case WED:cout << setw(14) << date[i];break;case THU:cout << setw(18) << date[i];break;case FRI:cout << setw(22) << date[i];break;case SAT:cout << setw(26) << date[i];cout << "\n";break;}}if(i!=0 && j==0) //第一行非第一天的输出格式{ switch(weekday){case SUN:cout << setw(4) << date[i];break;cout << setw(4) << date[i]; break;case TUE:cout << setw(4) << date[i]; break;case WED:cout << setw(4) << date[i]; break;case THU:cout << setw(4) << date[i]; break;case FRI:cout << setw(4) << date[i]; break;case SAT:cout << setw(4) << date[i];cout << "\n";break;}}}cout << endl;cout << "--------------------------\n"; cout << endl;cout << endl;cout << endl;cout << endl;cout << endl;cout << endl;return 0; }。
C语言程序设计 输出任意年份的日历
printf("");
printf("");
i2=0;flag2=0;
for(day2=p-(W+t[month-1])%7;day2<=t[month]&&flag2==0;day2++)
{i2++;printf("%4d",day2);
{
if(month<3)
{c=((int)(year-1)/100);
Y=(year-1)-((int)((year-1)/100))*100;
w=((int)(c/4))-2*c+Y+((int)(Y/4))+((int)(13*(month+13)/5));
W=(w+70)%7;
}
else if(month>=3)
if(i2%7==0) flag2=1;}
printf("\n");
}
}
}
{c=((int)(year/100));
Y=year-((int)(year/100))*100;
w=((int)(c/4))-2*c+Y+((int)(Y/4))+((int)(13*(month+1)/5));
W=(w+70)%7;
}
printf("\n\n%d%d\n",month,month+1);printf("日一二三四五六日一二三四五六\n");i1=W;/*一行一行的输出*/
c语言课程设计报告 万年历 最详细
C语言课程设计报告-----万年历设计人:贾伟涛学号:2013010912班级:13电信应电班指导老师:张伟日期:2014年6月9日内容提要通过大一下学期对C语言的学习,了解到了很多C语言的相关知识。
学习的过程虽然有很多困惑,但是当自己能够独立的看懂和独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。
我虽然可以看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对c语言的兴趣。
C语言是近年在国内外得到迅速推广应用的一种机器语言。
C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。
因此,C语言特别适合于编写各种软件。
在这次的课程设计中我将把日常生活中最经常接触的——日历的查询,利用C语言的程序编成一个简单的万年历查询系统。
通过这个小小的系统可以实现很多功能。
在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。
在不断的调试中最终才获得最为完整的程序。
接下来就是我的C 语言课程设计的具体内容来了,大家拭目以待吧!目录一、系统功能和数据说明-----------------------二、问题分析---------------------------------三、程序总体设计及功能结构框图---------------四、程序流程图-------------------------------五、源程序代码-------------------------------六、使用说明---------------------------------七、个人心得---------------------------------八、参考文献---------------------------------一、系统功能和数据说明(一)功能简介在日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简单明了的给我们最想要的日期信息。
F-程序示例
C、C++和Java程序示例在附录的这一部分,我们介绍一些用三种编程语言C、C++和Java写的例子,整体上给出这三种编程语言的结构概念。
例F.1 这个例子使用C语言中的循环和函数,打印一个日历上的月,使用的函数名为printMonth,它只接收这个月的开始天和这个月的天数作为输入。
这就是打印一年中任意一个月程序所要知道的。
程序F.l显示了主程序、函数和结果。
程序F.l例1打印一个日历上的月/* Test driver for function to print a calendar month,Written by:Date:*/#include <stdio.h>//Prototype declarationsvoid printMonth (int startDay, int days);int main (void){//StatementsprintMonth(2,29); //Day 2 is Tuesdayreturn 0;} //main/* ================== printMonth====================Print one calendar month.Pre:startDay is day of week relative to Sunday(0)Post:Calendar printed*/void printMonth (int startDay, int days)//Local Declarationsint weekday;//Statements//print day headerprintf("Sun Mon Tue Wed Thu Fri Sat\n");//position first dayfor (weekday=0; weekday<startDay; weekday++)printf( "" );for (int dayCount=1; dayCount<=days; dayCount++)if (weekDay>6)printf("\n");weekDay=l;} //ifelseweekDay++;print~("%3d",dayCount);}//forreturn;}//printMonthResults:Sun Mort 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例F.2这个例子使用了C++中的一个类和三个继承的子类。
C++实现万年历(原创)
C++实现万年历(原创)任务要求功能要求:(1)提供菜单⽅式选择,假定输⼊的年份在1940-2040年之间。
(2)输⼊⼀个年份,输出是在屏幕上显⽰该年的⽇历。
(3)输⼊年⽉,输出该⽉的⽇历,如图2-1所⽰: 图2- 1 ⽉⽇历(4)输⼊年份、⽉份、⽇期,计算得到的是这⼀天据今天有多少天,星期⼏。
(5)输⼊公历的年⽉⽇,输出农历年⽉⽇。
(6)输⼊农历节⽓,输出当年农历的年⽉⽇及公历年⽉⽇。
可以假定只涉及年份是1940年到2040年。
总体设计将⽂件三部分 Date.h、main.cpp、Date.cpp1) Date.h:包括函数的声明。
2) main.cpp:包含调⽤与模拟交互界⾯的函数代码3) Date.cpp://输⼊输⼊⼀个年份,输出是在屏幕上显⽰该年的⽇历。
void print_annual_calendar(int year)//输⼊年⽉,输出该⽉的⽇历。
void print_monthly_calendar(int year,int month)//输⼊年份、⽉份、⽇期,计算得到的是这⼀天据今天有多少天,星期⼏。
void print_number_week(int year,int month ,int day)//输⼊公历,显⽰农历。
void gregorian_to_lunar (int year,int month,int day)//输⼊农历节⽓,输出当年农历的年⽉⽇和公历年⽉⽇。
void solar_term(char *str)详细设计说明(1) 查询距今多少天,星期⼏?①计算某⼀⽇期到1939年1⽉1⽇的天数:getDaysTo1939(int year, int month, int day)1. 判断是否是闰年(平年365天,闰年366天),函数如表4-1所⽰:表4- 1 isLeapYear函数定义函数bool isLeapYear(int year)返回值若year年是闰年返回true,否则返回false参数说明year参数是要判断的年份1. 判断某年某⽉有多少天?函数如表4-2所⽰:表4- 2 getDaysOfMonth函数定义函数int getDaysOfMonth(int year,int month)返回值返回year年month⽉的天数参数说明year、month参数分别是要查询的年、⽉例如:计算2020年8⽉14⽇到1939年1⽉1⽇的天数。
c语言万年历并判断是否为闰年课程设计程序
【导言】C语言是一门被广泛使用的计算机编程语言,它的应用范围涵盖了各个领域。
而在计算机程序设计课程中,常常会有关于时间和日期的相关内容。
今天我们将讨论一个关于C语言编程的课程设计题目——C 语言万年历并判断是否为闰年程序设计。
【一、问题描述】1. 万年历的定义:所谓万年历,是指能够展示任意年份的日历,并且准确反映该年的月份和日期分布。
2. 闰年的定义:闰年是指公历中普通年份为365天,而闰年为366天的年份。
闰年有特定的判断规则。
【二、程序设计目标】1. 设计一个C语言程序,能够根据用户输入的年份,打印出该年的日历。
2. 在打印日历的判断该年份是否为闰年,并给出判断结果。
【三、程序设计思路】1. 确定程序的输入和输出:输入:用户输入一个年份输出:打印该年的日历,并给出是否为闰年的判断结果2. 了解计算闰年的规则:- 能被4整除但不能被100整除的年份为闰年- 能被400整除的年份也为闰年3. 设计程序的逻辑:- 首先根据输入的年份计算该年的日历,并以直观的形式输出- 然后根据闰年的判断规则,判断该年份是否为闰年,并给出判断结果【四、程序设计实现】以下是C语言程序的设计实现:```c#include <stdio.h>// 判断闰年的函数int isLeapYear(int year) {return (year 4 == 0 year 100 != 0) || (year 400 == 0);}// 打印日历的函数void printCalendar(int year) {// 实现日历打印的逻辑// 省略具体实现细节printf("这里是d年的日历\n", year);}int m本人n() {// 用户输入年份int year;printf("请输入年份:");scanf("d", year);// 打印该年的日历printCalendar(year);// 判断该年是否为闰年if (isLeapYear(year)) {printf("d年是闰年\n", year);} else {printf("d年不是闰年\n", year);}return 0;}```【五、程序设计测试】接下来我们对设计的C语言程序进行测试,例如输入2020年,程序将输出2020年的日历,并给出判断结果。
【IT专家】使用月和年输入用C打印朱利安日历?
本文由我司收集整编,推荐下载,如有疑问,请与我司联系使用月和年输入用C 打印朱利安日历?I’m trying to output a calendar in C and I think I’ve got the format down, but I’m having trouble with:我想用C 语言输出一个日历,我想我已经把它的格式写下来了,但是我有问题: Validating user input (I’ve commented out the potential solution, but it hasn’t compiled correctly yet. It always prints the “invalid year/month selected”and the break statement doesn’t work.) 验证用户输入(我已经注释掉了潜在的解决方案,但是它还没有正确编译。
它总是打印“选定的无效年/月”,而break 语句不起作用。
Startingthe calendar days on the correct day of the week (May of 2018 starts on Tuesday, not onSunday) 在一周的正确日期开始日历日(2018 年5 月开始于周二,而不是周日) My current output:我目前的输出:Enter month: 5Enter year: 2018 Su M Tu W Th F Sa 1 2 3 4 5 6 7 8 9 10 11 12 131415 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 My desired output:我的期望输出值:Enter month: 5 Enter year: 2018 Su M Tu W Th F Sa 1 2 3 4 5 6 7 8 9 10 11 12 131415 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Here’s my program:这是我的计划:#include stdio.h #include stdlib.h /* #defines */#define BEGIN 1900#define DAYS_IN_WEEK 7/* function prototypes */void getMonthYear(int *month, int *year);int toJulian(int month, int day, int year);int daysInMonth(int month, int year);int leapYear(int year);long yearsToDays(int year);void printCalendar(int startDay, int numDays);void printHeader();/* Calendar.c: Prints monthly calendar. Lab 4 / Week 9 */void main(void) int month, year; int startDay; // what day is first day of month. 1/1/1900 was Monday, so... // day 1 is Mon, day 2 is Tue, ... , day 0 is Sun getMonthYear( month, year); startDay = (toJulian(month, 1, year) + yearsToDays(year)) % DAYS_IN_WEEK;。
万年历
万年历程序设计一、需求规格说明:具体内容:设计一个c语言程序,模仿现实生活中的挂历。
基本要求:(1)良好的用户界面(2)输入年月日,能显示星期几,(3)输入年,能打印该年的年历,并分屏显示(4)输入年,能判断是否为闰年(5)输入年月,输出该月的月历,并将该天的日历反显二、算法设计:(1)设计思想:a, 利用公式定义函数,来计算输入的年月日是星期几;b, 利用光标的移动及对应日期的星期数来打印年历;c, 利用判断闰年的方法来定义函数来判断输入的年份是否是闰年;d, 利用设计函数来实现月历的打印;(2)设计表示:A, 定义四个子函数和一个主函数void main()主函数,程序运行入口。
进行功能选项判断并引用相应功能函数.int isleap(int year)第一个子函数,该函数主要用来判断输入的年份是闰年还是平年;int CalWkd(int year,int month)第二个子函数,该函数包括int isleap(int year),主要用来判断输入的年月日是星期几int showcld(int wkd,int mtd)第三个子函数,该函数用到int CalWkd(int year,int month)的返回值,主要功能是显示具体年月的日历void printcalendar(int year)第四个函数,该函数中包括int isleap(int year),主要功能是打印输入的年份的日历调用关系图如下:(3)详细设计表示(1)显示具体日期是星期几的流程图如下:图(1)上述流程图简易说明:显示主菜单后,输入1,就可以根据提示的输入年月日的方法输入用户所要查询的日期,查询完后,若想继续此功能则按N,否则按Y退出此功能的查询,返回到主菜单,选择所需要的功能,按相应的键继续或退出(2)判断输入的年份是否是闰年的流程图:图(2)上述流程图的简易说明:显示主菜单后就可以输入2,在输入想要测试的年份,来实现测试所输入的是闰年还是平年,若想继续此功能则按N,否则按Y退出此功能的查询,返回到主菜单,选择所需要的功能,按相应的键继续或退出(3)输入年份分屏显示该年的日历的流程图如下:图(3)上述流程图的简易说明:显示主菜单后,若想打印一年的日历,就可以输入3,然后接着输入年份(XXXX),按enter键后就可以分屏打印一年的日历,若想继续此功能则按N,否则按Y退出此功能的查询,返回到主菜单,选择所需要的功能,按相应的键继续或退出(4)输入年月后显示该月的日历的流程图如下:图(4)上述流程图的简易说明:显示主菜单后,若想打印某个月的月历,就可以输入4,然后接着输入年,月(XXXX,XX),按enter键后就可以分屏打印一个月的月历,若想继续此功能则按N,否则按Y 退出此功能的查询,返回到主菜单,选择所需要的功能,按相应的键继续或退出(5)是否退出程序的流程图如下:图(5)上述流程图的简易说明:显示主菜单后,输入5,就可以按N或Y来选择是退出程序还是继续执行上述四个功能三、调试报告:(1)调试过程中刚开始用的求星期几的函数如下:int getday(int year,int month,int date)//测试具体的一天是星期几{int ds=0;int i;int rst;int wkd;int mthd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};if (isleap(year))mthd[2]=29; //闰年的二月有二十九天for (i=1;i<month;i++)ds+=mthd[i];ds=ds+date; //date是该月对应的号数rst=year+1+(year-1)/4+(year-1)/100+(year-1)/400+ds; //ds是该年从元旦开始到这一日的天数wkd=rst%7; //计算星期的公式return wkd;}这个函数是用来计算星期几;若用这个函数来计算星期几,那么由于我所设计的打印每个月的日历中的showcld(int wkd,int mtd)中的wkd要调用计算星期的结果,由于在打印年历的时候输入的形式为XXXX,XX,又由于int getday(int year,int month,int date)的入口参数是XXXX,XX,XX,所以在要求打印月历的时候,输入的年份无法进入int getday(int year,int month,int date),因此在showcld(int wkd,int mtd)中的for (i=0;i<wkd;i++){printf("\t");j++;} //光标移到对应的星期下面由于没有算星期几,上面这句循环根本就没有循环,这句循环语句是用来移动光标到对应的星期下面的,因此光标无法移动到对应的星期下面,那样的程序打印出来的日历的一号永远在星期一下面,因此我就考虑在计算星期的时候换用另外一个函数,这个函数的入口参数必须是XXXX,XX的,我就采用了int CalWkd(int year,int month),刚好符合要求,由于入口参数的问题,换用了一个计算星期的函数就解决了问题(2)在要求打印一个月的日历的时候,输入的一个XXXX,XX形的年月,电脑显示的是没有错误,但显示的结果是死循环,在调试的过程中发现我所输入的年,月,根本无法赋值,结果发现原因就在我把year,month的定义放到了scanf("%d,%d",&year,&month);,的后面,根本就无法赋值,因此就进入了死循环,解决这个问题的方法很简单,只需要把year,month 的定义放在scanf("%d,%d",&year,&month)的后面就可以了(3)算法的时空分析:最常见的公式:W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + DY是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。
万年历代码c语言
万年历代码c语言万年历是一种实用的日历工具,它可以根据年、月、日来显示当天的日期信息,并可以切换到其他日期来查询对应的日期信息。
在编写万年历的代码时,我们需要考虑输入的年份是否为闰年、每个月的天数、以及每个月第一天是星期几等等。
以下是一份使用C语言编写万年历的参考代码:```c#include <stdio.h>// 判断是否为闰年int isLeapYear(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }// 获取某年某月的天数int getMonthDays(int year, int month) {int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (month == 2 && isLeapYear(year)) {return 29;}return days[month - 1];}// 获取某年某月第一天是星期几int getFirstDayOfWeek(int year, int month) {int day = 1;for (int i = 1800; i < year; i++) {if (isLeapYear(i)) {day = (day + 366) % 7;} else {day = (day + 365) % 7;}}for (int i = 1; i < month; i++) {day = (day + getMonthDays(year, i)) % 7;}return day;}int main() {int year, month;printf("请输入年份:");scanf("%d", &year);printf("请输入月份:");scanf("%d", &month);// 判断输入是否合法if (year < 1800 || month < 1 || month > 12) {printf("输入的年份或月份不合法!\n");return 0;}// 获取某年某月的天数和第一天是星期几int days = getMonthDays(year, month);int firstDayOfWeek = getFirstDayOfWeek(year, month); // 打印万年历printf("日一二三四五六\n");for (int i = 0; i < firstDayOfWeek; i++) {printf(" ");}for (int i = 1; i <= days; i++) {printf("%2d ", i);if ((firstDayOfWeek + i) % 7 == 0) {printf("\n");}}printf("\n");return 0;}```以上代码实现了一个简单的万年历功能,在控制台输出给定年份和月份的月历。
C语言中的时间和日期处理
C语言中的时间和日期处理时间和日期是计算机程序中常用的数据类型,而C语言作为一种通用的编程语言,提供了许多用于处理时间和日期的函数和库。
本文将详细介绍C语言中的时间和日期处理,包括日期和时间的表示、标准库中的时间函数以及常见的时间和日期操作等。
一、日期和时间的表示在C语言中,日期和时间可以使用多种方式进行表示。
最常见的方式是使用结构体tm来表示日期和时间。
结构体tm定义在C标准库的<time.h>头文件中,其成员包括秒(tm_sec)、分(tm_min)、时(tm_hour)、天(tm_mday)、月(tm_mon)、年(tm_year)等,分别表示时间的各个单位。
另一种表示日期和时间的方式是使用整数表示。
UNIX时间戳(Unix timestamp)是指从1970年1月1日0时0分0秒开始经过的秒数,可以表示绝大多数现代操作系统所支持的日期和时间范围。
C语言中的time_t类型可以用来保存时间戳,通常使用time函数获取当前时间的时间戳。
二、标准库中的时间函数C标准库提供了一些常用的时间函数,可以用于获取当前时间、日期和执行时间和日期的各种操作。
1. time函数time函数用于获取当前系统时间的时间戳。
其函数原型如下:```time_t time(time_t *timer);```其中,timer参数可以用来保存获取到的时间戳,如果不需要保存,可以将其设置为NULL。
示例代码:```c#include <stdio.h>#include <time.h>int main() {time_t now;time(&now);printf("当前时间的时间戳:%lld\n", now);return 0;}```2. localtime和gmtime函数这两个函数用于将时间戳转换为结构体tm的形式,分别表示本地时间和协调世界时(UTC)。