C语言实现简单万年历

本文实例为大家分享了C语言实现简单万年历的具体代码,供大家参考,具体内容如下

#include <stdio.h>

#include<stdlib.h>

int year, month;

int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };

int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };

char week[7][10] = { "SUN","MON","TUE","WED","THU","FRI","SAT" };

bool IsLeap(int year)

{

if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) //判断闰年

{

return true;

}

else

{

return false;

}

}

void PrintStar()

{

printf("\t\t\t万年历\t\t\t\n");

printf("****************************************************\n");

for (int i = 0; i < 7; i++)

{

printf("%s\t", week[i]);

}

printf("\n");

}

int DaySum(int year, int month)

{

int sum = 0;

for (int i = 1990; i < year; i++)

{

if (IsLeap(i))

{

sum += 366;

}

else

{

sum += 365;

}

}

for (int i = 0; i < month - 1; i++)

{

if (IsLeap(year))

{

sum += run[i];

}

else

{

sum += ping[i];

}

}

return sum;

}

void PrintCal(int sum, int year, int month)

{

int nRes, nTmp;

nRes = sum % 7+1;//前面空几格

nTmp = 7 - nRes;//从第几格开始打印

for (int i = 0; i < nRes; i++)

{

printf("\t");

}

if (IsLeap(year))

{

for (int i = 1; i < run[month - 1]+1; i++)

{

printf("%d\t", i);

if (nTmp == i || (i - nTmp) % 7 == 0)

{

printf("\n");

}

}

printf("\n");

}

else

{

for (int i = 1; i < ping[month - 1]+1; i++)

{

printf("%d\t", i);

if (nTmp == i || (i - nTmp) % 7 == 0)

{

printf("\n");

}

}

printf("\n");

}

}

int main(void)

{

while (1)

{

scanf_s("%d %d", &year, &month);

PrintStar();

PrintCal(DaySum(year, month), year, month);

printf("****************************************************\n");

}

return 0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 C语言实现简单万年历 的全部内容, 来源链接: utcz.com/p/244882.html

回到顶部