• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c语言实现一个简单日历

c语言实现一个简单日历

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言日历代码,c语言日历,c语言日历程序,c语言打印日历,c语言编写日历等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

满足三个需求:

1.输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
2.输入年月,输出该月的日历。
3.输入年月日,输出距今天还有多少天,星期几,是否是公历节日。

最终完善版代码:

#include<stdio.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <windows.h>
int year , month , day ;
int day_of_month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
//char wek[7]={'周日','周一','周二','周三','周四','周五','周六'};
int current_year,current_month,current_day;
/************************************通用关键函数**************************************************/
void cls_screen()
{
    printf("请按任意键返回!\n");
    getchar();
    getchar();
    system("cls");
}
void get_current_time()   //获取当前时间
{
    time_t timep;
    struct tm *p;
    time(&timep);
    p = gmtime(&timep);
    current_year=1900+p->tm_year;
    current_month=1+p->tm_mon;
    current_day=p->tm_mday;
}
int judgement (int y)
{
    if (y % 400 == 0 || (y % 100 !=0 && y %4 ==0))
        return 1 ;
    else return 0 ;
}
int show_week (int year , int month , int day)
{
/*
公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7
    */
    int w ,k;   //记录周几
    int year_last=year %100,c=year/100 , m = month;
    if (month==1 )
    {
        year_last-=1 ;
        m=13 ;
    }
    else if (month==2)
    {
        year_last-=1;
        m=14;
    }
    w = (year_last + year_last/4 + c/4 - 2*c +26*(m+1)/10+day-1); // abs  绝对值
    if (w<0)
    {
        k=(w%7+7)%7;
    }
    else k=w%7;
    return k ;
}
/************************************第一部分**************************************************/
void print_year (int year)
{
    int i , k ,x ,first_week;
    printf ("请输入想要查询的年月(格式如2012):");
    scanf ("%d",&year);
    printf("=======================%d年===========================\n",year);
    printf("\n");
    if (judgement(year))
    {
        day_of_month[1]=29;
    }
    else day_of_month[1]=28;
    for (i=1 ; i <13 ; i++)
    {
        first_week = show_week(year,i,1);
        printf("=====================%d月日历如下========================\n",i);
        printf ("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
        for (x=1;x<=first_week;x++)
        {
            printf("\t");
            if (x%7==0) printf ("\n");
        }
        for (k=1;k<=day_of_month[i-1];k++)
        {
            printf("%d\t",k);
            if (x%7==0) printf ("\n");
            x++;
        }
        printf("\n");
        printf("\n");
        printf("\n");
    }
}
/************************************第二部分**************************************************/
void print_year_month ()
{
    int k ,x ,first_week;
    printf ("请输入想要查询的年月(格式如2012 12):");
    do
    {
        scanf ("%d %d",&year,&month);
        if (month<1||month>12)
        {
            printf("您输入的月份有误哦~请输入正确的月份\n");
            printf ("请输入想要查询的年月(格式如2012 12):");
        }
    }while(1>month||month>12);
    printf("=====================%d年%d月======================\n",year,month);
    if (judgement(year))
    {
        day_of_month[1]=29;
    }
    else day_of_month[1]=28;
    first_week = show_week(year,month,1);
    printf ("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
    for (x=1;x<=first_week;x++)
    {
        printf("\t");
        if (x%7==0) printf ("\n");
    }
    for (k=1;k<=day_of_month[month-1];k++)
    {
        printf("%d\t",k);
        if (x%7==0) printf ("\n");
        x++;
    }
    printf("\n");
}
/************************************第三部分**************************************************/
int year_before_sumdays (int year,int month, int day)
{
    int days=0 ,i,judgement1;
    int temp_day=0 ,sum_days;       //
    //printf ("%d,%d\n",current_year,current_month);
    judgement1=judgement(year);
    /*===================比当前少=====================*/
    if (year < current_year )
    {
        for (i = year+1;i < current_year ;i++)     
        {
            if (judgement(i))
            {
       &nbs

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c语言实现一个简单日历

相关文章

  • 2017-05-28MFC中动态创建控件以及事件响应实现方法
  • 2017-05-28简单了解C++语言中的二元运算符和赋值运算符
  • 2017-05-28基于C++ cin、cin.get()、cin.getline()、getline()、gets()函数的使用详解
  • 2017-05-28C语言的Struct Hack笔记
  • 2017-05-28C++中重载、重写(覆盖)和隐藏的区别实例分析
  • 2017-05-28详解C++语言中的加法运算符与赋值运算符的用法
  • 2017-05-28C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析
  • 2017-05-28linux之awk命令的用法
  • 2017-05-28C++友元函数与拷贝构造函数详解
  • 2017-05-28浅析C语言头文件和库的一些问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 算法之排列算法与组合算法详解
    • C++编程中的格式化输出详解
    • C++实现合并排序的方法
    • 求32位机器上unsigned int的最大值及int的最大值的解决方法
    • atoi和itoa函数的实现方法
    • C++ 中 const和static readonly区别
    • 深入理解C++中的文件操作
    • C语言程序中递归算法的使用实例教程
    • Objective-C的内省(Introspection)用法小结
    • C++中指针和引用的区别分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有