<程序>输入年份,月份——打印月历

本文介绍如何使用C++编写程序,根据用户输入的年份和月份,生成对应的月历。内容涵盖了日期计算、循环结构以及字符串格式化等编程技巧。
摘要由CSDN通过智能技术生成
#include <iostream>
#include<iomanip>
#include<cmath>
#include<limits>
using namespace std;
int zeller(int y, int m)
{
   
	int w, c = y / 100;
	y %= 100;
	w = y + y / 4 + c / 4 - 2 * c + 13 * (m + 1) / 5 ;
	w %= 7;
	w >= 0 ? w : w += 7;
	return w;
}

int main()
{
   
	int y, m, w, d, b = 0;
	while (1) 
	{
   
		cout << "请输入年[1900-210
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的Java程序,实现在命令行输入年份月份打印输出月历: ```java import java.util.Scanner; public class Calendar { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入年份:"); int year = scanner.nextInt(); System.out.print("请输入月份:"); int month = scanner.nextInt(); // 计算该月份的天数 int days = getDaysInMonth(year, month); // 计算该月份第一天是星期几 int firstDayOfWeek = getFirstDayOfWeek(year, month); // 打印月历头部 System.out.println(" Su Mo Tu We Th Fr Sa"); // 打印月历内容 int day = 1; for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { if (i == 0 && j < firstDayOfWeek) { System.out.print(" "); } else if (day > days) { break; } else { System.out.printf("%3d", day); day++; } } System.out.println(); if (day > days) { break; } } } // 计算该月份的天数 public static int getDaysInMonth(int year, int month) { int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (month == 2 && isLeapYear(year)) { return 29; } else { return daysInMonth[month - 1]; } } // 判断是否是闰 public static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } // 计算该月份第一天是星期几 public static int getFirstDayOfWeek(int year, int month) { int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int totalDays = 0; for (int i = 1900; i < year; i++) { if (isLeapYear(i)) { totalDays += 366; } else { totalDays += 365; } } for (int i = 1; i < month; i++) { if (i == 2 && isLeapYear(year)) { totalDays += 29; } else { totalDays += daysInMonth[i - 1]; } } return (totalDays + 1) % 7; } } ``` 该程序通过调用 `Scanner` 类的 `nextInt()` 方法获取用户输入年份月份,然后调用三个自定义的静态方法计算该月份的天数、判断是否是闰以及该月份第一天是星期几,并利用一个嵌套的循环打印月历的内容。其中,月历头部的 `Su Mo Tu We Th Fr Sa` 是指星期天到星期六的英文缩写,用于方便阅读月历
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值