m0_73674542 2022-10-14 17:01 采纳率: 67.7%
浏览 75
已结题

PTA循环,从1900年以来的第星期

任务描述
X同学出生在“2002年01月07日”,已知1900年1月1日是星期一,你知道他出生的那天是星期几吗?随意给你一个日期,你知道是星期几吗?

输入格式:
输入为一行,由减号分隔的三个整数,形如:Y-M-D,表示一个日期。测试数据日期均为1900年以来的合法日期。

输出格式:
请输出该日期是星期几,星期一至星期日分别用1至7表示。

#include<stdio.h>
int main()
{
    int y,m,d,net,num,sum=0;
    scanf("%d-%d-%d",&y,&m,&d);
    net=(y-1900)/4;
    num=(y-1900)%4;
    if(sum>=1)
    sum=net*1460+(num-1)*365;
    else
    sum=net*1460;
    switch(m)
    {
            case 12:sum+=30;
            case 11:sum+=31;
            case 10:sum+=30;
            case 9:sum+=31;
            case 8:sum+=31;
            case 7:sum+=30;
            case 6:sum+=31;
            case 5:sum+=30;
            case 4:sum+=31;
            case 3:sum+=28;
            case 2:sum+=31;
            case 1:sum+=d;
    }
    sum=sum%7;
    if(sum==0)
        sum=7;
    printf("%d",sum);
}

  • 写回答

2条回答 默认 最新

  • 於黾 2022-10-14 17:07
    关注

    问题好多
    1.sum初始成0了,那么其实0代表星期一
    你的结果直接+1就对了,不要判断如果是0就改成7,那就错了
    要么你sum的初始值改成1
    2.你为什么只加365,闰年哪里去了
    3.你的if里的判断条件为什么是sum>=1,这里sum明显是0呀,恒为假
    先写伪代码,把逻辑捋清楚再写代码,你现在不是代码不会写,是根本没厘清思路

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化