栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-26【编写万年历】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-26【编写万年历】

编写万年历

1.目的:
 培养逻辑思维的严密性
 提高利用C语言进行程序设计的能力
2.要求:
(1)输入年份,判断是否为闰年
(2)输入年月日,判断是星期几
(3)输入年份,打印出12个月的月历
(4)输入年月,打印出本月的日历

#include 
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair pii;

const int inf = 0x3f3f3f3f;
const int maxn = 1e6 + 5;
void runnian(int year1)
{
    if (year1 % 4 != 0)
        printf("%d年不是闰年n", year1);
    else if (year1 % 100 == 0 && year1 % 400 != 0)
        printf("%d年不是闰年n", year1);
    else
        printf("%d年是闰年n", year1);
}
void xinqi(int iY, int iM, int iD)
{
    int iWeekDay = -1;
    if (1 == iM || 2 == iM)
    {
        iM += 12;
        iY--;
    }
    iWeekDay = (iD + 1 + 2 * iM + 3 * (iM + 1) / 5 + iY + iY / 4 - iY / 100 + iY / 400) % 7;
    switch (iWeekDay)
    {
    case 0:
        cout << "Sundayn";
        break;
    case 1:
        cout << "Mondayn";
        break;
    case 2:
        cout << "Tuesdayn";
        break;
    case 3:
        cout << "Wednesdayn";
        break;
    case 4:
        cout << "Thursdayn";
        break;
    case 5:
        cout << "Fridayn";
        break;
    case 6:
        cout << "Saturdayn";
        break;
    }
}
void yueli(int n)
{
	int a,b,c,xinqi,i,j,num,temp1,temp2,temp3;
	a = n/100;
	b = n/4;
	c = (n+b-a)%7;
	if(c<=2)
	xinqi = c+5-((n%4==0)&&(n%100!=0)||(n%400==0));
	else
	{
		xinqi = c-2-((n%4==0)&&(n%100!=0)||(n%400==0));
		if(xinqi == 0)
		xinqi = 7;
	}
	
	for(i = 1; i <= 12; i++)
	{
		printf("Sun Mon Tue Wed Thu Fri Satn");
		
		temp1 = 1;
		
		if(i==2)
		num = 28+((n%4==0)&&(n%100!=0)||(n%400==0));
		else if(i%2 != 0)
		{
			if(i >=1 && i<= 7)
			num = 31;
			else
			num = 30;
		}
		else if(i%2 == 0)
		{
			if(i >= 4 && i <= 6)
			num = 30;
			else
			num = 31;
		}
		
		if(xinqi == 7)
		{
			temp2 = 0;
			temp3 = 7;
			xinqi = num%7;
		}
		else
		{
			temp2 = 4*xinqi;
			temp3 = 7-xinqi;
			xinqi = num+xinqi-28;
			if(xinqi>7)
			xinqi = xinqi%7;
		}

		for(j = 1; j <= temp2; j++)
		printf(" ");
		
		while(temp1 <= num)
		{
			printf("%3d ",temp1++);
			if(temp1==temp3+1 || temp1==temp3+8 || temp1==temp3+15 || temp1==temp3+22 || temp1==temp3+29)
			printf("n");
		}
		cout<> n >> y >> r;
    runnian(n);
    xinqi(n, y, r);
    yueli(n);
    rili(n, y);
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号