C语言实现万年历小功能

所属分类: 软件编程 / C 语言 阅读数: 91
收藏 0 赞 0 分享

本文实例为大家分享了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语言来求最大连续子序列乘积的方法,基本的思路以外文中还附有相关ACM题目,需要的朋友可以参考下
收藏 0 赞 0 分享

用C语言判断一个二叉树是否为另一个的子结构

这篇文章主要介绍了用C语言判断一个二叉树是否为另一个的子结构,是数据结构学习当中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现的阶乘,排列和组合实例

这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言查找数组里数字重复次数的方法

这篇文章主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言简单实现计算字符个数的方法

这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

c实现linux下的数据库备份

本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

C++获得文件状态信息的方法

这篇文章主要介绍了C++获得文件状态信息的方法,包括文件状态信息、文件所在磁盘盘符、文件创建时间、访问时间及修改日期等,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言按关键字搜索文件夹中文件的方法

这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言之字符串模糊查询方法的实现

本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现BMP转换JPG的方法

这篇文章主要介绍了C语言实现BMP转换JPG的方法,涉及C#图片格式转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多