C语言之日历问题

一、代码展示 

#include<stdio.h>
int leapyear(int year)//判断是不是闰年函数
{if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)return 1;elsereturn 0;
}
int days(int year, int month, int* day)//判断一个月有几天
{if (month != 2)return day[month - 1];elsereturn 28 + leapyear(year);//如果是闰年则28+1;如果不是就28
}
int sumdays(int year, int month, int* day) 
{int sum=0;for (int i = 1900; i < year; i++) {if (leapyear(i) == 1)sum += 366;elsesum += 365;}for (int j = 1; j < month; j++) {sum += days(year, j, day);//计算一年中到目标月有几天}return sum;
}
int print(int month, int year, int* day) {int max = days(year, month, day);int min = sumdays(year, month, day) % 7;printf("       %d月      %d年       \n", month, year);printf("  一  二  三  四  五  六  日\n");for (int j = min; j > 0; j--) {printf("    ");}for (int i = 1; i <= max; i++) {printf("%4d", i);if ((i + min) % 7 == 0)printf("\n");}
}int main() {int year, month;int day[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };printf("Please enter the year and month you want to query:");scanf("%d %d", &year, &month);if (month > 12 || month < 1){printf("Input Error!\n");}print(month, year, day);putchar('\n');return 0;
}

二、代码分析

int leapyear(int year)//判断是不是闰年函数
{if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)return 1;elsereturn 0;
}

 这是一个名为 leapyear 的函数,用来判断给定的年份是否为闰年。根据闰年的规则,如果一个年份能被4整除且不能被100整除,或者能被400整除,那么这个年份就是闰年。该函数返回1表示是闰年,返回0表示不是闰年。

int days(int year, int month, int* day)//判断一个月有几天
{if (month != 2)return day[month - 1];elsereturn 28 + leapyear(year);//如果是闰年则28+1;如果不是就28
}

days 函数用于确定一个月份有多少天。对于非二月(2月)的月份,天数直接由数组 day 提供,其中 day 数组包含了每个月的天数。对于2月,如果当前年是闰年,那么2月就有29天,否则只有28天。

int sumdays(int year, int month, int* day) 
{int sum=0;for (int i = 1900; i < year; i++) {if (leapyear(i) == 1)sum += 366;elsesum += 365;}for (int j = 1; j < month; j++) {sum += days(year, j, day);//计算一年中到目标月有几天}return sum;
}

sumdays 函数计算从1900年到给定年份的前一年之间的总天数,再加上给定年份中截止到目标月份的总天数。这样得到的是自1900年以来的累积天数,可以用来确定星期几。

int print(int month, int year, int* day) {int max = days(year, month, day);int min = sumdays(year, month, day) % 7;printf("       %d月      %d年       \n", month, year);printf("  一  二  三  四  五  六  日\n");for (int j = min; j > 0; j--) {printf("    ");}for (int i = 1; i <= max; i++) {printf("%4d", i);if ((i + min) % 7 == 0)printf("\n");}
}

print 函数负责打印出给定月份和年份的日历。首先,它调用 days 和 sumdays 函数来获取这个月有多少天和月初是星期几。然后按照格式打印出日历的头信息,接着通过循环打印出日期,并在每7个数字后换行以形成一周的格式。

int main() {int year, month;int day[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };printf("Please enter the year and month you want to query:");scanf("%d %d", &year, &month);if (month > 12 || month < 1){printf("Input Error!\n");}print(month, year, day);putchar('\n');return 0;
}

主函数 main 是程序的入口点。它声明了两个整数变量 year 和 month 来存储用户输入的年份和月份。还初始化了一个包含各个月份天数的数组 day。接下来提示用户输入要查询的年份和月份,并检查输入是否有效(即月份是否在1到12之间)。最后调用 print 函数打印日历,并在结束时添加一个新行字符。

三、结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/686388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试

表达式和语句的区别 表达式就是可以被求值的代码比如什么a 1 语句就是一段可以执行的代码比如什么if else 直接给B站的黑马程序员的老师引流一波总结的真好 分支语句 就是基本上所有的语言都会有的if else 语句就是满足不同的条件执行不同的代码&#xff0c;让计算机有条件…

【Java程序员面试专栏 Java领域】Java虚拟机 核心面试指引

关于Java 虚拟机部分的核心知识进行一网打尽,主要包括Java虚拟机的内存分区,执行流程等,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 JVM 程序执行流程 包括Java程序的完整执行流程,以及Javac编译,JIT即时编译 Java程序的完整执…

C++抽象类、纯虚函数和接口

在C中&#xff0c;抽象类是一种特殊的类&#xff0c;旨在作为其他类的基类使用。它定义了一组接口&#xff0c;派生类应该实现这些接口。 抽象类的主要特征 至少包含一个纯虚函数&#xff0c;不能被直接实例化&#xff0c;为派生类提供基础结构 纯虚函数&#xff08;Pure Vi…

会声会影2024新功能及剪辑视频步骤教程

会声会影2024的新功能主要包括&#xff1a; 全新的标题动态与特效&#xff1a;用户可以为文字标题指定进入、中场和退出的不同动态效果&#xff0c;比如闪现进入、中场弹跳和淡出退出等&#xff0c;让文字标题更具动感。此外&#xff0c;还新增了多个标题特效&#xff0c;包括…

作物模型狂奔 Apsim 脚本并行思路

这里没图&#xff0c;去B站看看 整体思路&#xff1a;Python -》R -》Apsimx 0、准备工作 0.0 电脑环境 我用的Win10啦&#xff0c;Linux、Mac可能得自己再去微调一下。 PS&#xff1a;一直没上win11&#xff0c;因为win11 开始菜单用着实在难顶。 !在这里插入图片描述](h…

037-安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类

037-安全开发-JavaEE应用&JNDI注入&RMI服务&LDAP服务&JDK绕过&调用链类 #知识点&#xff1a; 1、JavaEE-JNDI注入-RMI&LDAP 2、JavaEE-漏洞结合-FastJson链 3、JavaEE-漏洞条件-JDK版本绕过 演示案例&#xff1a; ➢JNDI注入-RMI&LDAP服务 ➢JNDI注…

一文彻底搞懂MySQL主从同步

文章目录 1. 简介2. 基本原理3. 实现方式4. 常见的主从架构模式4.1 一主一从4.2 一主多从4.3 双M4.4 联级复制4.5 多主一从 5. 常见问题 1. 简介 MySQL主从同步是一种数据库复制技术&#xff0c;它可以将一台MySQL数据库&#xff08;称为主服务器&#xff09;的数据复制到另一…

阿里云香港服务器cn2速度测试和租用价格表

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品&#xff0c;中国电信CN2高速网络高质量、大规格BGP带宽&#xff0c;运营商精品公网直连中国内地&#xff0c;时延更低&#xff0c;优化海外回中国内地流量的公网线路&#xff0c;可以提高国际业务访问质量。阿里云服务…

YOLO v5项目实战 P5 解决运行detect文件时设置了--view-img但是显示不出来的问题

up主讲的实时显示目标检测后的图片的两种方法&#xff1a; &#xff08;1&#xff09;在下面的Terminal中输入下列命令&#xff1a; python detect.py --view-img &#xff08;2&#xff09;点击进入右上方的detect的Edit Configurations 然后在这个参数这里输入 --view img…

人工智能学习与实训笔记(八):百度飞桨套件使用方法介绍

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 八、百度飞桨套件使用 8.1 飞桨预训练模型套件PaddleHub 8.1.1 一些本机CPU可运行的飞桨预训练简单模型&#xff08;亲测可用&#xff09; 8.1.1.1 人脸检测模型 8.1.1.2 中文分词模型 8.1…

自然语言编程系列(四):GPT-4对编程开发的支持

在编程开发领域&#xff0c;GPT-4凭借其强大的自然语言理解和代码生成能力&#xff0c;能够深刻理解开发者的意图&#xff0c;并基于这些需求提供精准的编程指导和解决方案。对于开发者来说&#xff0c;GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

《数字电子电路》 课程设计:十字路口红绿灯自动控制系统(上)(multisim仿真及PCB实现)

&#xff08;一&#xff09;前言 本系列文章就笔者在大二下学期进行《数字电子线路》课程设计的题目&#xff1a;十字路口红绿灯自动控制系统 进行详细的讲解&#xff0c;希望对读者有所帮助。 &#xff08;二&#xff09;目录 一、主要指标及要求 二、电路工作原理 1、工作原…

P15---总电磁转矩T

正弦波驱动模式工作的永磁同步电动机的总电磁转矩 T clear clc% 15页表达式 syms Omega theta E I e_A E*sind(theta) e_B E*sind(theta-120) e_C E*sind(theta-240)i_A I*sind(theta) i_B I*sind(theta-120) i_C I*sind(theta-240)P e_A*i_A e_B*i_B e_C*i_CT P/Om…

Unity设备分级策略

Unity设备分级策略 前言 之前自己做的设备分级策略&#xff0c;在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准&#xff0c;预生成部分已知机型的分级信息&#xff0c;且保存在包内&#xff1b;如果设备没有被评级过&#xff0c;则优…

QKD安全攻击防御方案分析和分级评估研究报告

今天分享的是行业报告&#xff1a;《QKD安全攻击防御方案分析和分级评估研究报告》 &#xff08;内容出品方&#xff1a;量子信息网络产业联盟&#xff09; 报告共计&#xff1a;180页 来源&#xff1a;《见鹿报告》 前言 量子通信是量子信息科学的重要分支&#xff0c;它…

572. 另一棵树的子树

Problem: 572. 另一棵树的子树 文章目录 思路解题方法复杂度Code 思路 这个问题可以通过序列化树和KMP算法来解决。首先&#xff0c;我们将两棵树都序列化为一个字符串列表&#xff0c;然后使用KMP算法来检查第二棵树的序列化结果是否为第一棵树的子串。 解题方法 首先&#xf…

【大模型】0.5B的大模型通义千问1.5-0.5B-Chat来了!!

【大模型】0.5B的大模型通义千问1.5-0.5B-Chat来了&#xff01;&#xff01; 模型介绍训练细节Requirements拉取模型示例代码多轮对话测试输出示例资源占用参考 模型介绍 Qwen1.5是Qwen2的测试版&#xff0c;这是一个基于转换器的纯解码器语言模型&#xff0c;在大量数据上进行…

快速实现Python/Flask静默获取微信公众号OpenID的完整指南及代码

初步简介 初始授权请求&#xff1a;用户访问 /api/wx_api/get_wx_openid 路由时&#xff0c;服务器端会生成一个微信授权URL&#xff0c;该URL指向微信的授权页面&#xff0c;并包含了必要的查询参数&#xff08;如appid、redirect_uri、response_type、scope、state&#xff0…

位运算(一)

位运算注意事项 整形在计算机中是以补码的形式进行存储的&#xff0c;因此位运算也是在补码的基础上进行操作的。 复习&#xff1a;正数&#xff1a;原码反码补码 负数&#xff1a;反码原码取反(除符号位) 补码反码1 位运算~&#xff1a;按位取反&#xff08;在补码上按位取…

Shellcode免杀对抗(Python)

Shellcode Python免杀&#xff0c;绕过360安全卫士、火绒安全、Defender Python基于cs/msf的上线 cs 执行代码2种可供选择 执行代码 1&#xff1a; rwxpage ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40) ctypes.windll.kernel32.RtlMoveMemory…