找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10990|回复: 5
打印 上一主题 下一主题
收起左侧

c语言日历程序设计(可查询任意年的任意月)

[复制链接]
跳转到指定楼层
楼主
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int Year=2012;
int Month=4;
int MonthDays[] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31};
char IsLeapYear(int Year)
{
    if((Year % 4 == 0 && Year % 100 != 0) || Year % 400 == 0)
    {
        return 1 ;
    }
    else
    {
        return 0 ;
    }
}
int GetFirstDay(int year,int month,int day)
{
int week=0;
int c=0,y=0;
if (month==1)
{
  year--;
  month=13;
}
if (month==2)
{
  year--;
  month=14;
}
c=year/100;
y=year%100;
week=(c/4)-2*c+y+(y/4)+(26*(month+1)/10)+day-1;
week%=7;
if (week<0)
{
  week+=7;
}
return week;
}
void DisMonthDays(int year,int month)
{
int i;
int tmp=0;
int week=0;
printf("       %d 年 %d 月\n",year,month);
printf("日  一  二  三  四  五  六\n");
tmp=MonthDays[month-1];
if (month==2)
{
  if (IsLeapYear(year))
  {
   tmp=MonthDays[month-1]+1;
  }
  else
   tmp=MonthDays[month-1];
}
week=GetFirstDay(year,month,1);
for(i=0;i<week;i++)
{
  printf("    ");
}
for(i=1;i<=tmp;i++)
{
  printf("%2d  ",i);
  if (week>=6)
  {
   week=0;
   printf("\n");
  }
  else
   week++;
}
}
void GetKey()
{
int key;
key = getche();
if(key==224)
{
  key = getche();
  if (key==72)
  {
   Month++;
   if (Month>12)
   {
    Month=1;
    Year++;
   }
  }
  else
   if (key==80)
   {
    Month--;
    if (Month<1)
    {
     Month=12;
     Year--;
    }
   }
}
}
void main(void)
{
while (1)
{
  DisMonthDays(Year,Month);
  GetKey();
  printf("\n");
  system("cls");
}
}















分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58110 发表于 2018-4-5 07:01 | 只看该作者
老师您好,能分享一下完整的程序吗
谢谢

回复

使用道具 举报

板凳
ID:320397 发表于 2018-5-3 15:26 | 只看该作者
楼上的这个已经是完整的代码了




可编译的,我上图编译成功了.

日历2.PNG (41.34 KB, 下载次数: 160)

日历2.PNG

日历.PNG (16.44 KB, 下载次数: 152)

日历.PNG
回复

使用道具 举报

地板
ID:370231 发表于 2019-3-8 14:21 | 只看该作者

谢谢!51黑有你更精彩!
回复

使用道具 举报

5#
ID:1065225 发表于 2023-3-5 23:22 | 只看该作者
楼主这个十分有趣,不知道对于闰年和400年这个也是好评
回复

使用道具 举报

6#
ID:253767 发表于 2023-8-29 09:05 | 只看该作者
DEV C++运行该程序出错:[Error]“::main”必须返回“int”。
原程序:void main(void)
{
  while (1)
  {
    DisMonthDays(Year,Month);
    GetKey();
    printf("\n");
    system("cls");
  }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表