一:學了C語言,相信大家都可以做出來。我們要實現的就是用戶輸入年,月,日。然後打印出來。
二:需要用到的知識點
1,for循環。2,if判斷。3,函數的調用
如果您們學了圖形庫的話,可以貼圖上去,效果更加好看。我沒有素材,所以,直接用C語言來完成。
三:運行結果
四:我們用C語言代碼實現
/************************************************************************
* 項目名稱:萬年曆
* 項目描述:算法,判斷
* 項目環境:VS2013
* 生成日期:2020-3-8
* 作者所屬:追夢
*************************************************************************/
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int year, month, day;
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 weekday[7][10] = { "一", "二", "三", "四", "五", "六", "日" };//星期
void printStar()//打印
{
printf("**************************************************\n");
}
void printBegin()//打印擡頭
{
printf("\t\t萬年曆\t\n");
printStar();
for (int i = 0; i < 7; i++)//打印星期
{
printf("%s\t", weekday[i]);
}
printf("\n");
}
//打印下面的日期,判斷當前年份是平年還是閏年
int leap(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//閏年
return 1;
else if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0)//閏年
return 1;
else
return 0;//平年
}
//計算year離1900年有多少天
int daySum(int year,int month,int day,int run[],int ping[])
{
//參照物1900-1-1-星期一(百度)
int i, sum = 0;
//計算年份天數,閏年+366,平年+365
for( i = 1900; i < year;i++)
{
if (leap(i) == 1)
sum += 366;
else
sum += 365;
}
for (i = 0; i < month-1; i++)//計算月份的天數
{
if (leap(year) == 1)
sum += run[i];
else
sum += ping[i];
}
return sum;
}
//打印日曆
void printData(int sum, int year, int month)
{
int result, temp, i; //result空格
result = sum % 7;//前面的空格就是餘數---->0-6
//當前月份空餘的天數,空格表示
for ( i = 0; i < result; i++)
{
printf("\t");
}
temp = 7 - result;//開始打印1號
if (leap(year) == 1)
{
//數組下標是從0開始,月份從一號開始i=1
for (i = 1; i <= run[month - 1]; i++)
{
printf("%d\t", i);
if (i == temp || (i - temp) % 7 == 0)//換行
printf("\n");
}
printf("\n");
}
else
{
for (i = 1; i <= ping[month - 1]; i++)
{
printf("%d\t", i);
if (i == temp || (i - temp) % 7 == 0)//換行
printf("\n");
}
printf("\n");
}
}
int main()
{
system("color 2f");//改變黑窗口的顏色
printf("請輸入年 月 日:");
scanf("%d%d%d", &year, &month, &day);
int sum = daySum(year, month, day, run, ping);
printBegin();
printData(sum, year, month);
system("pause");
return 0;
}
謝謝觀看