4.29. 平年闰年,大小月练习

Console.Write

int y = Convert.ToInt32(Console.ReadLine());

bool isok = false;

int m1 = 31, m2 = 28, m3 = 31, m4 = 30, m5 = 31, m6 = 30, m7 = 31, m8 = 31, m9 = 30, m10 = 31, m11 = 30;

int sum = 0;

if (y >= 0 && y <= 9999)

{

if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)              {

isok = true;

}

else

{

isok = false;

}

Console.Write("请输入月份(1-12):");

int m = Convert.ToInt32(Console.ReadLine());

if (m >= 1 && m <= 12)

{

Console.Write("请输入日期(1-31):");

int d = Convert.ToInt32(Console.ReadLine());

//判断日期是否正确,先看用户输入的月份是大月还是小月,先排除2月

//1.大,3.大,5.大,7.大,8.大,10.大,12.大

//4.小,6.小,9.小,11.小

//2.特殊

//1.31,2,28/29,3.31,4.30,5.31,6.30,7.31,8.31,9.30

//10.31,11.30

if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)

{

if (d <= 31 && d > 0)                        {

Console.WriteLine("日期输入正确!");

Console.WriteLine(y + "年" + m + "月" + d + "日");

//计算当前日期是当年的第几天

if (isok)//说明当前是闰年

{

m2 = 29;

switch (m)

{

case 1: sum = d; break;

case 2: sum = m1 + d; break;

case 3: sum = m1 + m2 + d; break;

case 4: sum = m1 + m2 + m3 + d; break;

case 5: sum = m1 + m2 + m3 + m4 + d; break;

case 6: sum = m1 + m2 + m3 + m4 + m5 + d; break;

case 7: sum = m1 + m2 + m3 + m4 + m5 + m6 + d; break;

case 8: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + +d; break;

case 9: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d; break;

case 10: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d; break;

case 11: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d; break;

case 12: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d; break;

}

Console.WriteLine(d + "天是" + y + "的第" + sum + "天");

}

else//不是闰年

{

m2 = 28;

switch (m)

{

case 1: sum = d; break;

case 2: sum = m1 + d; break;

case 3: sum = m1 + m2 + d; break;

case 4: sum = m1 + m2 + m3 + d; break;

case 5: sum = m1 + m2 + m3 + m4 + d; break;

case 6: sum = m1 + m2 + m3 + m4 + m5 + d; break;

case 7: sum = m1 + m2 + m3 + m4 + m5 + m6 + d; break;

case 8: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + +d; break;

case 9: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d; break;

case 10: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d; break;

case 11: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d; break;

case 12: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d; break;

}

Console.WriteLine(d + "天是" + y + "的第" + sum + "天");

}

}

else

{

Console.WriteLine("日期输入有误!");

}

}

else if (m == 4 || m == 6 || m == 9 || m == 11)//输入的是小月

{

if (d <= 30 && d > 0)//日期输入正确

{

Console.WriteLine("日期输入正确!");

Console.WriteLine(y + "年" + m + "月" + d + "日");

//计算当前日期是当年的第几天

if (isok)//说明当前是闰年

{

m2 = 29;

switch (m)

{

case 1: sum = d; break;

case 2: sum = m1 + d; break;

case 3: sum = m1 + m2 + d; break;

case 4: sum = m1 + m2 + m3 + d; break;

case 5: sum = m1 + m2 + m3 + m4 + d; break;

case 6: sum = m1 + m2 + m3 + m4 + m5 + d; break;

case 7: sum = m1 + m2 + m3 + m4 + m5 + m6 + d; break;

case 8: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + +d; break;

case 9: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d; break;

case 10: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d; break;

case 11: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d; break;

case 12: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d; break;

}

Console.WriteLine(d + "天是" + y + "的第" + sum + "天");

}

else//不是闰年

{

m2 = 28;

switch (m)

{

case 1: sum = d; break;

case 2: sum = m1 + d; break;

case 3: sum = m1 + m2 + d; break;

case 4: sum = m1 + m2 + m3 + d; break;

case 5: sum = m1 + m2 + m3 + m4 + d; break;

case 6: sum = m1 + m2 + m3 + m4 + m5 + d; break;

case 7: sum = m1 + m2 + m3 + m4 + m5 + m6 + d; break;

case 8: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + +d; break;

case 9: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d; break;

case 10: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d; break;

case 11: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d; break;

case 12: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d; break;

}

Console.WriteLine(d + "天是" + y + "的第" + sum + "天");

}

}

else

{

Console.WriteLine("日期输入有误!");

}

}

else if (m == 2)//如果是2月,那么很麻烦

{

//判断是否是闰年

//年份可以被4整除 并且 不能被100整除

//特殊年:或者,年份可以被400整除

if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)//说明当前是闰年

{

if (d <= 29 && d > 0)//日期正确

{

Console.WriteLine("日期输入正确!");

Console.WriteLine(y + "年" + m + "月" + d + "日");

Console.WriteLine(y + "年是闰年!");

m2 = 29;

switch (m)

{

case 1: sum = d; break;

case 2: sum = m1 + d; break;

case 3: sum = m1 + m2 + d; break;

case 4: sum = m1 + m2 + m3 + d; break;

case 5: sum = m1 + m2 + m3 + m4 + d; break;

case 6: sum = m1 + m2 + m3 + m4 + m5 + d; break;

case 7: sum = m1 + m2 + m3 + m4 + m5 + m6 + d; break;

case 8: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + +d; break;

case 9: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d; break;

case 10: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d; break;

case 11: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d; break;

case 12: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d; break;

}

Console.WriteLine(d + "天是" + y + "的第" + sum + "天");

}

else//日期错误

{

Console.WriteLine("日期输入有误!");

}

}

else//说明不是闰年

{

if (d <= 28 && d > 0)//日期正确

{

Console.WriteLine("日期输入正确!");

Console.WriteLine(y + "年" + m + "月" + d + "日");

Console.WriteLine(y + "年不是闰年!");

m2 = 28;

switch (m)

{

case 1: sum = d; break;

case 2: sum = m1 + d; break;

case 3: sum = m1 + m2 + d; break;

case 4: sum = m1 + m2 + m3 + d; break;

case 5: sum = m1 + m2 + m3 + m4 + d; break;

case 6: sum = m1 + m2 + m3 + m4 + m5 + d; break;

case 7: sum = m1 + m2 + m3 + m4 + m5 + m6 + d; break;

case 8: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + +d; break;

case 9: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d; break;

case 10: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d; break;

case 11: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d; break;

case 12: sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d; break;

}

Console.WriteLine(d + "天是" + y + "的第" + sum + "天");

}

else//日期错误

{

Console.WriteLine("日期输入有误!");

}

}

}

}

else//月份错误

{

Console.WriteLine("月份输入有误!");

}

}

else//年份输入错误

{

Console.WriteLine("年份输入有误!");

}

Console.ReadLine();

}

}

}

时间: 2024-11-16 07:30:36

4.29. 平年闰年,大小月练习的相关文章

日期,为下拉列表添加日期,优化,目前本人博客上最优的解决方案,之前学习的通过判断得到平年闰年,而这个是让系统自动去判断,无须if判断,代码示例

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");String path = request.getContextPath();String bas

shell整理(31)===判断平年闰年和嵌套循环的小例子

题目(一) 有1 2 3 4 四位数,任意组合有多少种互不相同且无重复的数字,分别是什么? shell代码如下: #!/bin/bash for i in `seq 4` do for x in `seq 4` do for y in `seq 4 ` do [ $x -eq $i  ] && continue [ $x -eq $y  ] && continue [ $i -eq $y  ] && continue echo $i$x$y done don

c语言判断平年/闰年

要求: 用户输入年份之后,判断输入的是平年还是闰年 #include<stdio.h> #include<stdlib.h> #include<string.h> intmain(void) { //定义变量 int year = 0; int temp = 0; int temp1 = 0; //提示用户输入年份 printf("请输入年份:"); scanf("%d",&year); //首先判断当前的年份是否为整百或

机试常见问题 关于平年闰年的判断问题

以前一直以为闰年366天,只要被4整除就是闰年,实际不然: 1.天数问题: 闰年:366天: 平年:365天: 简记:平年胸平,365天,比较小: 2.如何判断: 闰年:两种情况: 1)四百的整数倍: 2)4的倍数,但不是一百的倍数,典型的如2100年,是平年而不是闰年: 平年:剩下的就是平年: 简记:四年一孕,百年不孕,四百年又孕. 典型问题:https://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d?tpId=40&t

VS工具制作控制台日历中算法的启发

前些天的学习任务是利用VS工具编码实现控制台显示任意年份和月份对应的日历.因为关系到年份和月份,很容易考虑到润年的情况,故功能需求中对于润年的判断及相对应月份天数的判断利用多个for循环和if判断均可轻易实现.但作为该任务最难也是最重要的一点是,当月日历会承接上月的星期而显示一定数量的空白,如图所示: 这个功能的实现,需要找到每个月空白的规律.在没有提示的情况下,萨摩观察了多个月的规律,得到这样的关系:设一只1900年1月1号前为1个空白,则该月末有5*7-1-当月天数即35-1-31=3个空白

闰年与平年问题

很小白的一个问题,不过做题目常常遇到,还经常给忘了.写下来以备忘了直接过来看下: 闰年平年的区别: 闰年366天 平年365天 多的那一天就是2月的一天,平年二月28天,闰年29天 闰年的判断方式: ①:能被4整除,但不能被100整除 ②:能被400整除,但不能被3200整除 C语言表达: if((year%4==0&&year%100!=0)||(year%400==0)) return true; 附:一年各个月有几天 1.3.5.7.8.10.12月份,每个月31天. 2月闰年有29

老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件

ios 8 的时间滚轮控件实现了扁平化,带来很好用户体验,android没有现成控件,小弟不才,数学与算法知识不过关,顾十分苦恼,幸好在github上找到sai大神实现代码,甚为欣喜,顾把学习这个控件点滴记录下来,分享给大家.项目原地址https://github.com/saiwu-bigkoo/Android-PickerView. ios 8 滚轮的效果: 而sai大神控件的效果: 哎,妈呀是不是效果95%相识啊. 好了,废话少说,谈谈我从这个控件中收获的心得. 首先,我们要高瞻远瞩看一下

数据库SQL优化大总结之百万级数据库优化方案

网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到.纠正以及补充. 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id f

千万级大数据的Mysql数据库SQL语句优化

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用