iphone6s无法加入网络:三天打鱼两天晒网

来源:百度文库 编辑:高校问答 时间:2024/04/19 14:23:47
为什么输入1993 10 25结果是打鱼而答案是晒网

int t1=0,t2=0;
void year1(int year,int month)
{int t,i,j;
j=year-1990;
for(i=1;i<=j;i++)
{t=data(year,month);
if(t==1)
t1=t1+366;
else
t2=t2+365;
year=year-1;
}

}
int data(int year,int month)
{
if(month>=2)
{if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
}
else
return 0;
}
main()
{int b,c,i,day1=0,year,month,day;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
clrscr();
printf("请输入日期:");
scanf("%d %d %d",&year,&month,&day);
for(i=1;i<month;i++)
day1=day1+a[i];
day1=day1+day;
b=data(year,month);
day1=day1+b;
year1(year,month);
day1=day1+t1+t2;
printf("%d",day1);
day1=day1%5;
if(day1>0&&day1<4)
printf("打鱼") ;
else
printf("晒网");
}

答案不对主要是返回值有问题
建议改成
int data(int year,int month)
{ int temp=0;
if(month>=2)
{
if((year%4==0&&year%100!=0)||(year%400==0))
temp=1;
}
return(temp);
}

另外

void year1(int year)//参数year就行了
{int t,i,j;
j=year-1990;
for(i=1;i<=j;i++)
{////t=data(year,month);////去掉这句
if((year-1)%4==0&&(year-1)%100!=0||(year-1)%400==0)
//条件改成这样
t1=t1+366;
else
t2=t2+365;
year=year-1;
}
}

感觉这样改改比较好
理由:因为你这是做整年天数的 你输入10月25并不影响
如果你输入的月份为1月 并且中间存在闰年的话不是全都不加366了吗??
year改成year-1 拿本题来说 for循环做3次
如果用year 那么他加的整年是93年 92年 91年全年天数
实际应该加的是90年 91年 92年

楼主参考下