分享--------日历程序(自己打入,检验后有三个警告,但可运行,欢迎大家完善此程序)
来源:互联网 发布:大数据专业委员会 编辑:程序博客网 时间:2024/05/16 01:50
#include "stdio.h"
const int monthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
const int yearBase=2000;
const int weekDayBase=6;
main()
{
void PrintIntroduction();
int IsLegal(int,int);
void Calendar(int,int);
int year;
int month;
PrintIntroduction();
while(1){
printf("please enter year:");
scanf("%d",&year);
printf("please enter month:");
scanf("%d",&month);
if(IsLegal(year,month)){
Calendar(year,month);
}
else{printf("The date that you type in is illega\n");
break;
}
}
}
void PrintIntroduction()
{
printf("*****************************************\n");
printf("The program will print the calendar of the given month\n");
printf("You can type in the year after 2000,and month between 1 and 12\n");
printf("If what you type in is illengal, the calendar will not be printed\n");
printf("*****************************************\n");
}
int IsLegal(int year,int month)
{
return(year>=2000&&month>=1&&month<=12);
}
void Calendar(int year,int month)
{
void PrintHeadline(int,int);
void printBody(int,int);
PrintHeadline(year,month);
PrintBody(year,month);
}
void PrintHeadline(int year,int month)
{
char name[10];
switch(month){
case 1:strcpy(name,"January");
break;
case 2:strcpy(name,"February");
break;
case 3:strcpy(name,"March");
break;
case 4:strcpy(name,"April");
break;
case 5:strcpy(name,"May");
break;
case 6:strcpy(name,"June");
break;
case 7:strcpy(name,"July");
break;
case 8:strcpy(name,"Aujust");
break;
case 9:strcpy(name,"September");
break;
case 10:strcpy(name,"October");
break;
case 11:strcpy(name,"November");
break;
case 12:strcpy(name,"December");
break;
}
printf("********************************\n");
printf(" %d %s\n",year,name);
printf("********************************\n");
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
}
PrintBody(int year,int month)
{
int weekDay,number;
int counter;
int FirstDay(int,int);
int IsLeap(int);
weekDay=FirstDay(year,month);
number=monthDays[month];
if(IsLeap(year)&&month==2){
number++;
}
for(counter=0;counter<weekDay*5;counter++){
printf(" ");
}
for(counter=1;counter<=number;counter++){
printf("%5d",counter);
weekDay++;
if(weekDay%7==0){
printf("\n");
}
}
printf("\n");
}
int FirstDay(int year,int month){
int IsLeap(int);
int counter;
int sum;
int sumYear=0;
int sumMonth=0;
int weekDay;
for(counter=yearBase;counter<year;counter++){
if(IsLeap(counter)){
sumYear+=366;
}
else{
sumYear+=365;
}
}
for(counter=1;counter<month;counter++){
sumMonth++;
}
sum=sumYear+sumMonth;
weekDay=(sum+weekDayBase)%7;
return(weekDay);
}
int IsLeap(int year){
return(year%4==0&&year%100!=0||year%400==0);
}
- 分享--------日历程序(自己打入,检验后有三个警告,但可运行,欢迎大家完善此程序)
- 一个自己编写的象棋程序,可实现走棋谱(如炮二平五),工程完成度%96,跟大家分享一下,下一步要做残局,欢迎交流
- VC 程序运行后自己删除自己
- 开始自己的程序网络学习博客欢迎大家光临
- java 自己写的五子棋程序 源代码和大家分享
- log4j警告后,程序停顿不继续运行
- 程序运行初始动画后黑屏无响应但无报错
- 奋斗中。。。自己写的一个时钟程序,希望大家继续完善!
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- VC 如何使程序运行后自己删除自己
- 摄像头程序详解
- Android的StrictMode(严苛模式)
- VBoxLinuxAdditions.run 不能执行
- C语言位运算详解
- 关于Zero-Knowledge的定义
- 分享--------日历程序(自己打入,检验后有三个警告,但可运行,欢迎大家完善此程序)
- android 内存优化
- OK6410开发板ARM基本介绍(二)S3C6410的Booting模式
- 一个程序员过去十年的经验分享
- OK6410开发板ARM基本介绍(三)时钟管理
- 软考复习之路—再谈组成原理
- 动态规划(1)-01背包【模板】
- 【Java】数组
- 网络推广不能只依靠网络