编写一万年历系统(2021年)

 

要求:模仿现实生活中的挂历。

当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。

当系统日期变到下一月时,系统自动翻页到下一月。

 

到底要C版本,还是C++版本啊

#include <stdio.h>
 
int year(int y)
{
	if ((y%4==0) && (y%100!=0) || y%400==0)
		return 366;
	else
		return 365;
}
 
int main()
{
	int y;
	int i,j,sum=0;	
	int begin,week;
	int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 
	scanf("%d",&y);
	for(i=1;i<y;i++)
		sum+=year(i);
	
	week=(sum+1)%7;		//表示该年1月1日为星期几
	
	if(year(y)==366)
		days[1]=29;	
 
	printf("\n%d年日历如下:\n\n",y);
 
	for(i=0;i<12;i++)
	{
		printf("       %d月          \n",i+1);
		printf("  7  1  2  3  4  5  6\n");
		printf("=====================\n");
		begin=1;
		for(j=0;j<week;j++)
			printf("   ");
		while(begin<=days[i])
		{
			printf("%3d",begin);
			begin++;
			week=(week+1)%7;
			if(week%7==0)
				printf("\n");
		}
		printf("\n\n");
 
	}
	
	
 
	return 0;
}

 

#include <stdio.h>

int total_days = 0;//全局变量
int month_days = 0;//全局变量
int week_days  = 0;//全局变量

int TotalDays(int year, int month)
{
    int y, mon;
    for (y = 1900; y < year; y++)//计算从1900年至今的所有年份的总天数
    {
        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
        {
            total_days += 366;
        }
        else
        {
            total_days += 365;
        }
    }

    for (mon = 1; mon < month; mon++)//加上从1月至所查询月份的总天数
    {
        if (mon == 2)//二月
        {
            if ((year % 4 == 0 && y % 100 != 0) || (year % 400 == 0))//闰年29天
            {
                total_days += 29;
            }
            else
            {
                total_days += 28;
            }
        }
        else if (mon == 4 || mon == 6 || mon == 9 || mon == 11)//每月有30天的月份
        {
            total_days += 30;
        }
        else//每月有31天的月份
        {
            total_days += 31;
        }
    }
}

int WeekDay()//判断所查询月份的第一天是星期几
{
    total_days += 1;
    week_days = total_days % 7;
}


int MonthDays(int year, int month)//判断当月共有多少天
{
    if (month == 2)
    {
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        {
            month_days = 29;
        }
        else
        {
            month_days = 28;
        }
    }
    else if (month == 4 || month == 6 || month == 9 || month == 11)
    {
        month_days = 30;
    }
    else
    {
        month_days = 31;
    }
}


void print()//打印信息
{   
    int i;
    printf("日   一   二   三   四   五   六\n");
    for(i = 1; i <= week_days; i++)
    {
        printf("     ");
    }
    int k;
    for(k = 1; k <= month_days; k++)
    {
        if(total_days % 7 == 6)
        {
            printf("%2d\n", k);
        }
        else
        {
            printf("%2d   ", k);
        }
        total_days++;
    }
    printf("\n\n");
}

int main()
{
    int year=0, month=0;

    system("clear");
    printf("请输入查询时间:     年    月\n");
    system("tput cup 0 16");
    scanf("%d", &year);
    system("tput cup 0 24");
    scanf("%d", &month);
    printf("\n");

    TotalDays(year, month);
    WeekDay(year, month);
    MonthDays(year, month);
    print();

    return 0;
}

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
 

使用Calender对象实现,在进行页面格式化展示。