不会有人不吃香菜吧 2021-10-12 10:55 采纳率: 73.7%
浏览 155
已结题

C语言:(循环,数组) 已知1900年1月1日是星期一,求y年m月d日是星期几?

【输入】 一行,3个以空格分隔的整数 y、m、d,分别为年、月、日,满足1900 ≤ y ≤ 9999,且是一个合法日期
【输出】 一行,表示星期的英文字符串,周日到周六分别为 Sunday、Monday、Tuesday、Wednesday、Thursday、Friday、Saturday
【样例输入】 2019 1 4
【样例输出】 Friday
辛苦说下大致思路以及代码。

  • 写回答

3条回答 默认 最新

  • 叫我小唐就好了 Java领域新星创作者 2021-10-12 11:05
    关注
    
    #include<stdio.h>
    int main()
    {
    int y,m,d,n;
    int a[13],i,sum1,sum2,sum;
    
    scanf("%d%d%d",&y,&m,&d);
    sum1=0;sum2=d;sum=0;
    
    
    for(i=1900;i<y;i++)
    {
    if(i%4==0&&i%100!=0||i%400==0)
    n=366;
    else n=365;
    sum1=sum1+n;    //每年天数和
    }
    
    
    if(y%4==0&&y%100!=0||y%400==0)
    a[2]=29;
    else a[2]=28;
    for(i=1;i<=12;i++)
    if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
    a[i]=31;
    else if(i==4||i==6||i==9||i==11)
    a[i]=30;
    
    for(i=1;i<m;i++)     //每月天数和
    sum2=sum2+a[i];
        sum=sum1+sum2;
    
        switch(sum%7)
    {
    case 0:printf("Sunday\n");break;
    case 1:printf("Monday\n");break;
    case 2:printf("Tuesday\n");break;
    case 3:printf("Wednesday\n");break;
    case 4:printf("Thusday\n");break;
    case 5:printf("Friday\n");break;
    case 6:printf("Saturday\n");break;
    default:break;
    }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 已采纳回答 10月12日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题