一个日历小程序.

原创 2006年06月05日 17:52:00


#include<stdio.h>
#define Sunday 0
#define Monday 1
#define Tuesday 2
#define Wednesday 3
#define Thursday 4
#define Friday 5
#define Saturday 6
void GiveInstructions(void);/*输出介绍*/
int GetYearFromUser(void);/*用户输入年份*/
void PrintCalendar(int year);
void PrintCalendarMonth(int month,int year);
void IndentFirstLine(int weekday);
int MonthDays(int month,int year);
int FirstDayOfMonth(int month,int year);/*月的第一天*/
char* MonthName(int month);/*月份的名称*/
int IsLeapYear(int year);
int IsLeapYear(int year)
 {if(((year%4==0)&&(year%100!=0))||(year%400==0))
    return(1);
    else return(0);
 }


/*main program*/
void main()
{
    int year;
    GiveInstructions();
    year=GetYearFromUser();
    PrintCalendar(year);
    getch();
    }

void GiveInstructions(void)
{
printf("This program displays a calender for a null/n");
printf("year,the year must not before 1900/n");
 }
 int GetYearFromUser(void)
 {int year;
    while(1){
        printf("which year?");
        scanf("%d",&year);
        if(year>=1900) return(year);
        printf("the  year must be at least 1900/n");
        }
   }
void PrintCalendar(int year)
{
int month;
    for(month=1;month<=12;month++){
            PrintCalendarMonth(month,year);
            printf("/n");
            }
   }

void PrintCalendarMonth(int month,int year)
{
int weekday,ndays,day;
printf("     %s,   %d/n/n",MonthName(month),year);
printf(" Su Mo Tu We Th Fr Sa /n");
ndays=MonthDays(month,year);
weekday=FirstDayOfMonth(month,year);
IndentFirstLine(weekday);
    for(day=1;day<=ndays;day++){
        printf("%3d",day);
        if(weekday==Saturday)printf("/n");
        weekday=(weekday+1)%7;
        }
       if(weekday!=Sunday)printf("/n");
    }
void IndentFirstLine(int weekday)
{int i;
    for(i=0;i<weekday;i++){
    printf("   ");
    }
 }
int MonthDays(int month,int year)
{switch(month){
    case 2:
        if(IsLeapYear(year)) return(29);
        return(28);

    case 4:case 6: case 9: case 11:
        return(30);
    default: return(31);
}
 }
int FirstDayOfMonth(int month,int year)
{int weekday,i;
    weekday=Monday;
        for(i=1900;i<year;i++)
        {weekday=(weekday+365)%7;
       if(IsLeapYear(i))weekday=(weekday+1)%7;
           }
      for(i=1;i<month;i++){
        weekday=(weekday+MonthDays(i,year))%7;
        }
        return(weekday);
        }
char* MonthName(int month)
{switch(month){
    case 1:return("Januray");
    case 2:return("Februay");
    case 3:return("Marth");
    case 4:return("April");
    case 5:return("May");
    case 6:return("June");
    case 7:return("July");
    case 8:return("Augest");
    case 9:return("September");
    case 10:return("October");
    case 11:return("November");
    case 12:return("December");
    default:return("illegal month");
    }
}

 

相关文章推荐

日历控件,为了在自己的程序中随时得到一个日期所写的

package com.Stareast.Tools; import java.awt.Color; import java.awt.event.MouseAdapter; import...

一个日历 Demo程序

  • 2013年10月29日 01:05
  • 1.44MB
  • 下载

用C++写一个日历程序,要求输入年份,显示全年的日历

日历 C++

一个显示当前月的日历的java小程序

import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.GregorianCalendar;...

一个日历C程序

由于C语言当初没学好,像C的结构体,文件流,指针等都还弄不明白。 现在又捡起来再看一本C语言的书--Application Programming in Ansi C 下面是最近的一个代码,关于打...

一个带有阴历的日历程序

  • 2002年12月16日 00:00
  • 86KB
  • 下载

java程序设计一个日历,不用封装的类的程序

public class Calendar {public static void main(String[] args) { int newYear = 0;//输入的年份 int ...

Java编写的一个小日历程序

  • 2010年03月15日 20:16
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个日历小程序.
举报原因:
原因补充:

(最多只允许输入30个字)