实现万年历的输出

简介: Java(switch)和 Python(列表)对于万年历的输出switch分支用数组也可以实现,为了做笔记写了switch已知1900年1月1日是星期一,请用户输入查询的年份以及月份,查询出对应的万年历,万年历格式如附件图所示:

Java


import java.util.Scanner;


public class Homework {

   public static void space(int a){

       for(int i=0;i4;i++){

           System.out.print(" ");        }

   }  //输出所有占位的空格,每组数字4个字符    

public static void main(String[] args) {

     Scanner input=new Scanner(System.in);        

int flag=0,now_flag=0;        

System.out.println("********* 欢迎使用万年历 *********");               System.out.print("请输入要查询的年份:");        

int years=input.nextInt();        

int years_num=years-1900;  //已经过去的年数        

for(int i=1900;i;i++){

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

               flag+=1;        

}  //判断已经过去的年中有多少个闰年        

System.out.print("请输入要查询的月份:");        

int months=input.nextInt();        

int M=0;  //判断要输出的万年历中的月份有多少天        

switch (months){

           case 1:case 3:case 5:case 7:case 8:case 10:case 12:

               M=31;                break;            

case 2:

               M=28;                break;            

case 4:case 6:case 9:case 11:

               M=30;                break;        }

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

           now_flag=1;        }  //判断今年是否是闰年      

 int months_day=0;  //判断今年已经过去了多少天        

switch (months-1){

           case 1:

               months_day=31;                break;          

case 2:

               months_day=59+now_flag;                break;            

case 3:

               months_day=90;                break;            

case 4:

               months_day=120;                break;            

case 5:

               months_day=151;                break;            

case 6:

               months_day=181;                break;            

case 7:

               months_day=212;                break;            

case 8:

               months_day=243;                break;            

case 9:

               months_day=273;                break;            

case 10:

               months_day=304;                break;            

case 11:

               months_day=334;                break;        }

       int days_num=years_num*365+flag+months_day;  //计算从1990年到本月1日已经过去了多少天        

 System.out.println("\t\t\t\t\t\t");        

 if(days_num%7==0){

       System.out.println();        }  //如果已经过去的天数%7==0,说明本月1日是周一,输出空行        

 space(days_num%7);        

 if(months==2)

           M+=now_flag;        

 for(int i=1;i<=M;i++){

           System.out.print(i+"\t");            

if ((i%7+days_num)%7==0){

               System.out.println();            }

       }  //输出中判断换行    }

}

Python


def space(a):
   for i in range(a):
       print("\t",end="")
def weekday():
   week = ['', '', '', '', '', '', '']
   for i in week:
       print("%s\t" % i, end="")
   print()
month_day=[31,28,31,30,31,30,31,31,30,31,30,31]
month_day_add=[]
for i in range(len(month_day)):
   sum=0
   for j in range(i):
       sum+=month_day[j]
   month_day_add.append(sum)
# print(month_day_add)  [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
print("{:*^27}".format(" 欢迎使用万年历 "))
year=int(input("请输入查询的年份:"))
month=int(input("请输入查询的月份:"))
runnian_num=0
for i in range(1900,year):
   if (i%4==0 and i%100!=0) or i%400==0:
       runnian_num+=1
num=(year-1900)*365+runnian_num+month_day_add[month-1]
weekday()  #打印一二三四...
if num%7==0:
   print()
space(num%7)
M=month_day[month-1]
if month==2 and ((year%4==0 and year%100!=0) or year%400)==0:
   M+=1
for i in range(1,M+1):
   print(i,"\t",end="")
   if (i%7+num%7)%7==0:
       print()

目录
相关文章
|
4月前
|
人工智能 小程序 IDE
编一个自己的万年历
编一个自己的万年历
67 2
|
4月前
打印楼梯
打印楼梯。
37 8
|
Python
项目万年历
用python语言编写项目万年历。
153 0
|
芯片
第七章 输入/输出与中断【微机原理】2
第七章 输入/输出与中断【微机原理】2
145 0
|
C++
第七章 输入/输出与中断【微机原理】3
第七章 输入/输出与中断【微机原理】3
155 0
第七章 输入/输出与中断【微机原理】1
第七章 输入/输出与中断【微机原理】1
80 0
|
C语言 芯片
单片机|I/O输出功能
单片机|I/O输出功能
122 0
|
数据采集 传感器 编解码
LabVIEW控制Arduino采集多路模拟量、数字量(进阶篇—1)
数据采集,是指从传感器和其他待测设备的模拟和数字被测单元中自动采集信息的过程。能够实现数据采集功能的系统叫作数据采集系统。
LabVIEW控制Arduino采集热敏电阻温度数值(基础篇—13)
利用热敏电阻和LIAT中的热敏电阻函数节点,通过Arduino Uno控制板的模拟端口采集与热敏电阻串联电阻的分压值上传给LabVIEW软件,并除以温度系数以获得温度值,实现一个温度计的功能。
|
传感器 监控 程序员
LabVIEW控制Arduino采集热电偶温度数值(进阶篇—2)
在之前的博文中,介绍了LabVIEW控制Arduino采集LM35温度传感器数值和LabVIEW控制Arduino采集热敏电阻温度数值的方法。本篇博文将基于热电偶搭建一款温度监控系统。