C语言编程

2025-02-23 21:54:00
推荐回答(3个)
回答1:

/*编程序实现如下功能:输入任意一个年份,

求出从公元1年1月1日到这一年每个月的1日总共有多少天,

并求出这一年每个月的1日是星期几,

再按以下格式输出该年份全年的公历日历。

 要求用循环控制打印。

   打印样例如下:

 9月

----------------------------

日    一     二    三    四   五    六

                                    1

 2     3     4     5     6     7    8

 9     10     11    12     13    14    15

16    17    18    19     20    21    22

23    24    25    26     27    28    29

30

*/

#include

int main()

{

    int year,day,leap;//leap为1表示闰年,0表示平年

    int i =1,thisYear[13]={0},j=1;

    printf("请输入年份:");

    scanf("%d",&year);

    //计算公元01年01月01日到该年份的天数

    day = (year-1) * 365 + year/4-year/100+year/400;

    printf("公元01年01月01日到该年是%d天\r\n",day);

    printf("公元1年1月1日到这一年每个月的1日分别是:\r\n");

    printf("1月\t2月\t3月\t4月\t5月\t6月\t7月\t8月\t9月\t10月\t11月\t12月\r\n");

    if(year%4==0 && year%100!=0 || year%400==0)

leap=1;

    else

        leap=0;

    thisYear[0]=day;

    thisYear[1]=day+31;

    thisYear[2]=day+leap+28+31;

    thisYear[3]=day+leap+28+31*2;

    thisYear[4]=day+leap+28+31*2+30;

    thisYear[5]=day+leap+28+31*3+30;

    thisYear[6]=day+leap+28+31*3+30*2;

    thisYear[7]=day+leap+28+31*4+30*2;

    thisYear[8]=day+leap+28+31*4+30*3;

    thisYear[9]=day+leap+28+31*5+30*3;

    thisYear[10]=day+leap+28+31*5+30*4;

    thisYear[11]=day+leap+28+31*6+30*4;

    printf("%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\r\n",thisYear[0],thisYear[1],thisYear[2],thisYear[3],thisYear[4],

           thisYear[5],thisYear[6],thisYear[7],thisYear[8],thisYear[9],thisYear[10],thisYear[11]);

    //求出这一年每个月的1日是星期几:

    for(i=1;i<=12;i++)

    {

        printf("这一年的%d月的1日是星期%d\r\n",i,thisYear[i-1]%7);

    }

    printf("(注:0表示星期天)\r\n");

    //再按以下格式输出该年份全年的公历日历。

    for(i = 1;i<=12;i++)

    {

        printf("%d月\r\n",i);

        printf("----------------------------------------------\r\n");

        printf("日\t一\t二\t三\t四\t五\t六\r\n");

        switch(thisYear[i-1]%7)

         {

             case 0:

                break;

             case 1:

                 printf("  \t");

                 break;

             case 2:

                 printf("  \t");

                 printf("  \t");

                 break;

             case 3:

                 printf("  \t");printf("  \t");printf("  \t");

                 break;

             case 4:

                 printf("  \t");printf("  \t");printf("  \t");printf("  \t");

                 break;

             case 5:

                 printf("  \t");printf("  \t");printf("  \t");printf("  \t");printf("  \t");

                 break;

             case 6:

                 printf("  \t");printf("  \t");printf("  \t");printf("  \t");printf("  \t");printf("  \t");

                 break;

         }

        for(j=1;j<=thisYear[i]-thisYear[i-1];j++)

         {


             printf("%2d\t",j);

             if((j+(thisYear[i-1]))%7==0)

                printf("\r\n");

         }

        printf("\r\n----------------------------------------------\r\n");

    }

    return 0;

}

回答2:

这个需要给出这年的第一天是星期几吧?要自己算太麻烦了

回答3:

c语言 日期问题 我可以写