C语言实现万年历小功能

 更新时间:2020年03月16日 07:52:12   作者:导航者-追梦  
这篇文章主要为大家详细介绍了C语言实现万年历小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现万年历的具体代码,供大家参考,具体内容如下

一、学了C语言,相信大家都可以做出来。我们要实现的就是用户输入年,月,日。然后打印出来。

二、需要用到的知识点

1.for循环。2.if判断。3.函数的调用

如果您们学了图形库的话,可以贴图上去,效果更加好看。我没有素材,所以,直接用C语言来完成。

三、运行结果

四、我们用C语言代码实现

/************************************************************************
*        项目名称:万年历
*        项目描述:算法,判断
*        项目环境:VS2013
*        生成日期:2020-3-8
*        作者所属:追梦
*************************************************************************/
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int year, month, day;
int run[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//闰年
int ping[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//平年
char weekday[7][10] = { "一", "二", "三", "四", "五", "六", "日" };//星期
void printStar()//打印
{
 printf("**************************************************\n");
}
void printBegin()//打印抬头
{
 printf("\t\t万年历\t\n");
 printStar();
 for (int i = 0; i < 7; i++)//打印星期
 {
 printf("%s\t", weekday[i]);
 }
 printf("\n");
}
//打印下面的日期,判断当前年份是平年还是闰年
int leap(int year)
{
 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//闰年
 return 1;
 else if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0)//闰年
 return 1;
 else
 return 0;//平年
}
//计算year离1900年有多少天
int daySum(int year,int month,int day,int run[],int ping[])
{
 //参照物1900-1-1-星期一(百度)
 int i, sum = 0;
 //计算年份天数,闰年+366,平年+365
 for( i = 1900; i < year;i++)
 {
 if (leap(i) == 1)
  sum += 366;
 else
  sum += 365;
 }
 
 for (i = 0; i < month-1; i++)//计算月份的天数
 {
 if (leap(year) == 1)
  sum += run[i];
 else
  sum += ping[i];
 }
 return sum;
}
//打印日历
void printData(int sum, int year, int month)
{
 int result, temp, i; //result空格
 result = sum % 7;//前面的空格就是余数---->0-6
 //当前月份空余的天数,空格表示
 for ( i = 0; i < result; i++)
 {
 printf("\t");
 }
 temp = 7 - result;//开始打印1号
 if (leap(year) == 1)
 {
 //数组下标是从0开始,月份从一号开始i=1
 for (i = 1; i <= run[month - 1]; i++)
 {
  printf("%d\t", i);
  if (i == temp || (i - temp) % 7 == 0)//换行
  printf("\n");
 }
 printf("\n");
 }
 else
 {
 for (i = 1; i <= ping[month - 1]; i++)
 {
  printf("%d\t", i);
  if (i == temp || (i - temp) % 7 == 0)//换行
  printf("\n");
 }
 printf("\n");
 }
}
int main()
{
 system("color 2f");//改变黑窗口的颜色
 printf("请输入年 月 日:");
 scanf("%d%d%d", &year, &month, &day);
 int sum = daySum(year, month, day, run, ping);
 printBegin();
 printData(sum, year, month);
 
 system("pause");
 return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言实现简单通讯录管理系统

    C语言实现简单通讯录管理系统

    这篇文章主要为大家详细介绍了C语言实现简单通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 图解C++的STL之stack和queue,轻松理解数据结构

    图解C++的STL之stack和queue,轻松理解数据结构

    聚焦 C++ 的 STL 中的 stack 和 queue,让数据结构变得简单有趣! 通过图解的方式,我们将轻松理解这两个重要的数据结构,准备好开启 STL 学习之旅了吗?让我们一起探索 stack 和 queue 的奥秘吧!
    2024-03-03
  • C语言规避野指针的方法流程

    C语言规避野指针的方法流程

    野指针就是指针指向的不是一个有效(合法)的地址,在程序中,如果访问野指针,可能会造成程序的崩溃,这篇文章主要介绍了C语言如何规避野指针,需要的朋友可以参考下
    2024-03-03
  • C++ OpenCV制作黑客帝国风格的照片

    C++ OpenCV制作黑客帝国风格的照片

    这篇文章主要介绍了如何通过C++ OpenCV制作出黑客帝国风格的照片,文中的示例代码讲解详细,对我们学习OpenCV有一定帮助,需要的可以参考一下
    2022-01-01
  • FFmpeg实现变速播放的两种方法总结

    FFmpeg实现变速播放的两种方法总结

    这篇文章主要为大家详细介绍了FFmpeg中实现变速播放的两种方法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以了解一下
    2023-07-07
  • C语言详细分析讲解内存管理malloc realloc free calloc函数的使用

    C语言详细分析讲解内存管理malloc realloc free calloc函数的使用

    C语言内存管理相关的函数主要有realloc、calloc、malloc、free等,下面这篇文章主要给大家介绍了关于C语言内存管理realloc、calloc、malloc、free函数的相关资料,需要的朋友可以参考下
    2022-05-05
  • c++关键字mutable深入解析

    c++关键字mutable深入解析

    先说用法,mutable关键字只能修饰非静态以及非常量成员变量,使用mutable修饰的成员变量在const函数中的值是可以修改的
    2013-09-09
  • C语言数据类型枚举enum全面详解示例教程

    C语言数据类型枚举enum全面详解示例教程

    生活中有很多地方会用到枚举,比如一周有7天,可以一一枚举;性别有男、女...等等都可以可以一一枚举,今天来和笔者一起学习一下c语言枚举吧
    2021-10-10
  • C语言算法的定义及分析详解

    C语言算法的定义及分析详解

    这篇文章主要为大家详细介绍了C语言算法的定义及分析,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++实现字符串元音字母反转的两种方法

    C++实现字符串元音字母反转的两种方法

    在处理字符串问题时,我们经常需要对其中的字符进行操作,例如反转、替换等,本文将详细讨论如何在C++中实现仅反转字符串中的所有元音字母,并返回结果字符串,需要的朋友可以参考下
    2024-07-07

最新评论