站外题大模拟求助
  • 板块题目总版
  • 楼主王轶
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/5/8 21:07
  • 上次更新2023/10/23 16:18:34
查看原帖
站外题大模拟求助
554884
王轶楼主2023/5/8 21:07

日历本

题目描述

我们经常需要使用日历,所以需要一个能生成日历的程序。 先要求你写一个程序,只需要输入年份,就能生成正确的日历。

输入

输入包含多组测试数据。每组输入一个整数Y(1800<=Y<=2100),表示公元年份。

输出

对于每组输入,输出对应的日立本。选中下面的输出样例查看具体的输出格式,注意空格的输出。

样例省略,代码求调:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[13][6][8];
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int x){
	if((x%4==0&&x%100!=0)||x%400==0)
		return true;
	return false;
}
int main(){
	scanf("%d",&n);
	bool flag=check(n);
	int first=3;
	for(int i=1800;i<=n;i++){
		if(check(i))first+=2;
		else first++;
		if(first>7)first-=7;
	}
	first++;
//	if(first==0)first=7;
//	cout<<first<<endl;
	if(flag)day[2]=29;
	for(int i=1;i<=12;i++){
		int con=1,fl=1;
		for(int j=1;j<=6;j++){
			for(int k=1;k<=7;k++){
				if(j==1&&k<first)continue;
				if(con>day[i]){
					fl=0;
					first=k;
					break;
				}
				a[i][j][k]=con++;
//				cout<<a[i][j][k]<<endl;
			}
			if(fl==0)break;
		}
	}
	printf("                              %d                              \n",n);
	puts("");
	puts("      January               February               March        ");
	puts("Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa");
	for(int j=1;j<=6;j++){
		for(int i=1;i<=3;i++){
			for(int k=1;k<=7;k++){
				if(a[i][j][k]){
					if(a[i][j][k]/10==0)printf(" %d ",a[i][j][k]);
					else printf("%d ",a[i][j][k]);
				}
				else printf("   ");
			}
			printf(" ");
		}
		puts("");
	}
	puts("       April                  May                   June        "); 
	puts("Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa");
	for(int j=1;j<=6;j++){
		for(int i=4;i<=6;i++){
			for(int k=1;k<=7;k++){
				if(a[i][j][k]){
					if(a[i][j][k]/10==0)printf(" %d ",a[i][j][k]);
					else printf("%d ",a[i][j][k]);
				}
				else printf("   ");
			}
			printf(" ");
		}
		puts("");
	}
	puts("        July                 August              September      ");
	puts("Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa");
	for(int j=1;j<=6;j++){
		for(int i=7;i<=9;i++){
			for(int k=1;k<=7;k++){
				if(a[i][j][k]){
					if(a[i][j][k]/10==0)printf(" %d ",a[i][j][k]);
					else printf("%d ",a[i][j][k]);
				}
				else printf("   ");
			}
			printf(" ");
		}
		puts("");
	}
	puts("      October               November              December      ");
	puts("Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa");
	for(int j=1;j<=6;j++){
		for(int i=10;i<=12;i++){
			for(int k=1;k<=7;k++){
				if(a[i][j][k]){
					if(a[i][j][k]/10==0)printf(" %d ",a[i][j][k]);
					else printf("%d ",a[i][j][k]);
				}
				else printf("   ");
			}
			printf(" ");
		}
		puts("");
	}
	return 0;
}
2023/5/8 21:07
加载中...