楼主你好!!!俺仔细的看了一下程序代码,代码没有错误!!!凯或!
俺解释一下(就针对与楼主的问题)
1.for(i=1i<day.monthi++) 这个for()语句没有错误,这句确实只算了11个月的,但前面的term.day=31 给了补上!!!原因是无论那一年,1月和12月都是31天,所以楼主先把1月和12月的算在一起啦!!!这也正是楼主第二个疑问的所在!!!
如果楼棚拿主不信的话!!!可以把每一年的打印出啦,看看是不是365/366
要是少算一个月的话,那一定不是365/365
修改如下:
#include<stdio.h>
#include<iostream.h>
struct date
{
int year
int month
int day
}
int days(struct date day)
{
static int day_tab[2][13]=
{
{0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天数*/
{0,31,29,31,30,31,30,31,31,30,31,30,31,},
}
int i,lp
lp=day.year%4==0&&day.year%100!=0||day.year%400==0
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
for(i=1i<day.monthi++) /*计算本年中自1月1日起的天数*/
day.day+=day_tab[lp][i]
cout<<day.day<<endl
return day.day
}
void main()
{
struct date today,term
int yearday,year,day
printf("Enter year/month/day:")
scanf("%d%d%d",&today.year,&today.month,&today.day) /*输入日期*/
term.month=12 /*设置变量的初始值:月*/
term.day=31 链孙搭 /*设置变量的初始值:日*/
//注意这里哈
for(yearday=0,year=1990year<today.yearyear++)
{
term.year=year
yearday+=days(term) /*计算从1990年至指定年的前一年共有多少天*/
}
yearday+=days(today) /*加上指定年中到指定日期的天数*/
day=yearday%5 /*求余数*/
if(day>0&&day<4)
printf("he was fishing at that day.\n") /*打印结果*/
else
printf("He was sleeping at that day.\n")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)