实践课题--万年历(按enter显示下个月份)

来源:互联网 发布:开发直播软件多少钱 编辑:程序博客网 时间:2024/06/15 22:35

问题及代码:

/**copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者:张晴晴*完成日期:2016年6月30日*版本号:v1.0*问题描述:万年历(2)*输入描述:输入年份*程序输出:输出一年的月历先输出1月按enter再输出二月*/#include<stdio.h>int judge(int year,int month)/*定义一个函数,把月分为四类(28,29,30,31)*/{if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)return(1);/*31天的月份返回值为1*/else if(month==2){if(year%4!=0||year%100==0&&year%400!=0)return(2);/*平年的2月份返回值为2*/else return(3);/*闰年的2月份,返回值为3*/}else return(4);/*30天的月份,返回值为4*/}int main(){void show();int year,i,j,a,n,m,k;char ** p;char enter;char * week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};char*month[]={"January","February","March","April","May","June","July","August","September","October","November","December"};show();printf("请输入你要查询的年:");while(scanf("%d",&year)!=EOF){printf("\n");printf(" %d的日历\n",year);printf("----------------------------------------------");printf("\n");a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;for(i=0;scanf("%c",&enter)!=27;i++)/*输出前几个月的日历表*/{n=judge(year,i+1);p=month+i;printf("%s\n",*p);printf("\n");for(j=0;j<7;j++){p=week+j;printf("%6s",*p);}printf("\n");for(k=0;k<a;k++)printf("      ");/*六个空格*/for(m=1;m<32;m++){printf("%6d",m);if((a+m)%7==0)printf("\n");/*输出七个字符(空格和数字)换行*/if(n==1&&m==31) break;else if(n==2&&m==28) break;else if(n==3&&m==29) break;else if(n==4&&m==30) break;}a=(a+m)%7;/*计算出下个月的第一天是星期几*/printf("\n");printf("----------------------------------------------");printf("\n");if(i==12){printf("\n\n 如果你想重新使用万年历\n\n\n 请再次输入你要查询的年");break;}printf("按enter继续");}}return 0;}void show(){printf("******************************************万年历**********************************");printf("\n\n\n\n                              欢迎使用万年历\n\n\n");printf("                               张晴晴,计1541班\n\n\n");printf("*******************************C语言课程设计**********************************\n\n\n\n");}

运行结果:


0 0
原创粉丝点击