怎么又报错啊


私信TA

用户名:uq_89563935268

访问量:4245

签 名:

等  级
排  名 736
经  验 3840
参赛次数 0
文章发表 14
年  龄 0
在职情况 学生
学  校 江西中医药大学
专  业 计算机

  自我简介:

TA的其他文章

解题思路:求出某年某月某日是星期几再按要求输出

注意事项:求某年某月某天是星期几:

公式:W= (d+1+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
 d:代表指定日期中的日是几号(如:2021年11月1日,d则为1)
m:代表指定日期中的月是几月(如:2021年11月1日,m则为11)
y:代表指定日期中的年是哪年(如:2021年11月1日,y则为2021)
注意:在公式中有个与其他公式不同的地方:
把1月和2月看成是上一年的13月和14月,例:如果是2021-1-10则换算成:2020-13-10来代入公式计算。以公元元年为参考,公元元年1月1日为星期一
参考代码:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

#include <stdio.h>

int fun(int a,int b,int q);

int main()

{

    int i,j,m,n,t,d,s=0;

    scanf("%d%d",&m,&n);

    t=abs(fun(m,n,1));

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

        s=1;

    switch(n)

    {

    case 1:

        d=31;

        break;

    case 2:

        if(s==0) d=28;

        else d=29;

        break;

    case 3:

        d=31;

        break;

    case 4:

        d=30;

        break;

    case 5:

        d=31;

        break;

    case 6:

        d=30;

        break;

    case 7:

        d=31;

        break;

    case 8:

        d=31;

        break;

    case 9:

        d=30;

        break;

    case 10:

        d=31;

        break;

    case 11:

        d=30;

        break;

    case 12:

        d=31;

        break;

    }

    printf("Sun Mon Tue Wed Thu Fri Sat\n");

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

    {

        if(abs(fun(m,n,i))==0)

        {

            if(i==1)

            {

                printf("  ");

                for(j=0;j<4*t;j++) printf(" ");

                printf("%d",i);

            }

            else if(i<=9&&i>1) printf("  %d",i);

            else printf(" %d",i);

        }

        else if(abs(fun(m,n,i))>=1&&abs(fun(m,n,i))<=5)

        {

              if(i==1)

            {

                printf("  ");

                for(j=0;j<4*t;j++) printf(" ");

                printf("%d",i);

            }

            else if(i<=9&&i>1) printf("   %d",i);

            else printf("  %d",i);

        }

        else if(abs(fun(m,n,i))==6)

        {

            if(i==1)

            {

                printf("  ");

                for(j=0;j<4*t;j++) printf(" ");

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

            }

            else if(i<=9&&i>1) printf("   %d\n",i);

            else if(i>=10&&i!=d)printf("  %d\n",i);

            else if(i==d) printf("  %d",i);

        }

    }

    return 0;

}

int fun(int a,int b,int q)//计算某年某月是星期几

{

    int w;

    if(b==1||b==2)

    {

        a--;b+=12;

    }

    w=(q+1+2*b+3*(b+1)/5+a+a/4-a/100+a/400)%7;

    return w;

}


 

0.0分

1 人评分

  评论区

  • «
  • »