weixin_45865533
江中命
2019-11-16 11:01

急!三天打鱼两天晒网问题,帮忙看一下哪里出错?为什么通不过第一组测试用例?非常感谢。(不用啦已经修改成功了!超开心!

  • c语言

背景:
中国有句老话,"三天打鱼两天晒网”。假设渔民老张从1990年1月1日开始"三天打鱼两天晒网”,那么请你帮助推算出在以后某一天中,老张是在"打鱼”,还是在"晒网”。
输入:
第一行是测试的组数。以后每一行是一组要测试的时间,有三个数据,分为表示为年、月、日。
输出:
根据输入的日期,打印出相应的情况(打鱼还是晒网),具体格式见测试用例。
图片说明
发现输入
1
1992 10 25这样单独一组数据也没有输出
但程序编译什么的都没有问题,思路应该也没有错阿!
想了很久了还是不明白。

#include
int main()
{
int year[100],mon[100],day[100],n,i,j,k,days,flag;
scanf("%d",&n);
int num[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i=0;i {
flag=1;
scanf("%d %d %d",&year[i],&mon[i],&day[i]);
if(year[i]%400==0||(year[i]%4==0&&year[i]%100!=0)) num[2]=num[2]+1;
if(year[i]9999) {printf("year is error!\n");flag=0;continue;}
if((mon[i]12)&&flag==1) {printf("month is error!\n");flag=0;continue;}
if((day[i]num[mon[i]])&&flag==1){printf("Day is error!\n");flag=0;continue;}

for(k=1990;k<year[i];k++)

{
if(k%400==0||(k%4==0 && k%100!=0)) days+=366;

else days+=365;

}
for(j=1;j<mon[i];j++)
{
days+=num[j];
}
days+=day[i];
if((days%5==3||days%5==2||days%5==1)&&flag==1)
printf("He was fishing on %d.%d.%d\n",year[i],mon[i],day[i]);
if((days%5==4||days%5==0)&&flag==1)
printf("He was basking on %d.%d.%d\n",year[i],mon[i],day[i]);
}
return 0;
}

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答