任意年月日历输出

我这个哪里错了啊

添加链接描述

#include <algorithm>
#include <iostream>
#include <stdio.h>
using namespace std;
int fun(int n)
{
	return (n%400==0)||(n%4==0&&n%100);
}
int main()
{
	int year,month,t;
	int k;
	long long sum=0;
	int a[2][12]={
				  {31,28,31,30,31,30,31,31,30,31,30,31},
				  {31,29,31,30,31,30,31,31,30,31,30,31}
				  };
	cin>>year>>month;
	printf("---------------------\n");
	printf(" Su Mo Tu We Th Fr Sa\n");
	printf("---------------------\n");
	for(int i=2007;i<year;i++){
		if(fun(i)) sum+=366;
		else sum+=365;
	}
	
	for(int i=0;i<month-1;i++){
		sum+=a[fun(year)][i];
	}
	t=a[fun(year)][month-1];
	switch(sum%7+1){
		case 1:printf("     1  2  3  4  5  6\n"),k=6;break;
		case 2:printf("        1  2  3  4  5\n"),k=5;break;
		case 3:printf("           1  2  3  4\n"),k=4;break;
		case 4:printf("              1  2  3\n"),k=3;break;
		case 5:printf("                 1  2\n"),k=2;break;
		case 6:printf("                    1\n"),k=1;break;
		case 7:printf("  1  2  3  4  5  6  7\n"),k=7;break;
	}
	int j=0;
	for(k++;k<=t;k++){
		printf("%3d",k);
		if((j+1)%7==0) printf("\n");
		j++;
	}
	if((j-1)%7!=0) cout<<endl;
	printf("---------------------\n");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42868863/article/details/86551589