C语言实现简单万年历,C语言实现简单万年历

你的名字 2022-10-15 00:56 294阅读 0赞

#includeint 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;

}

发表评论

表情:
评论列表 (有 0 条评论,294人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言--实现万年历

    一、思路: 1. 判断某年是否为闰年 2. 判断某年的某一天是星期几(有固定的公式) 3. 按一定的格式输出 二、代码: include<stdio