「已注销」 2021-10-17 22:17 采纳率: 40%
浏览 162

三天打鱼两天晒网 C语言

请问这个代码哪里错了
为什么提交之后用例只通过两个,还有两个显示结果错误

#include <stdio.h>
#include <stdlib.h>
#define MONTHS 12

int main()
{
int days[2][MONTHS]={{31,28,31,30,31,30,31,31,30,31,30,31},//平年每月天数
{31,29,31,30,31,30,31,31,30,31,30,31}};//闰年每月天数

int x,y,z,sum=0;//sum为总天数
int year,month,day;
scanf("%4d-%2d-%2d",&year,&month,&day);//输入日期
int i,a;

if(year<1990||month<=0||month>12||day<=0)
{printf("Invalid input");
exit(0);}

{if((year%4==0)&&(year%100!=0)||(year%400==0))//如果是闰年
{
        if(days>days[2][month-1])//如果输入的日大于当月的最大日期
        {printf("Invalid input");
        exit(0);}
}
else
     {
        if(day>days[1][month-1])
        {
            printf("Invalid input");
            exit(0);
        }
     }
}


x=year-1990;//年差
sum+=x*365;
int count=0;//记数,记从1990到输入的年份之前的闰年数
for(a=1990;a<year;a++)

{
if((a%4==0)&&(a%100!=0)||(a%400==0))
count++;
}
sum+=count;//补上闰年2月多出的一天

y=month-1;
for(i=0;i<y;i++)
{
    if((year%4==0)&&(year%100!=0)||(year%400==0))
        sum+=days[2][i];
    else
        sum+=days[1][i];
}

z=day;
sum+=z;

if(sum%5==1||sum%5==2||sum%5==3)//余数判断工作还是休息
    printf("He is working");
else
    printf("He is having a rest");



return 0;

}

img

  • 写回答

3条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 10月17日

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的