回 帖 发 新 帖 刷新版面

主题:帮忙找下错!编译没错,运行不通过问题~试过多组数据,有些通过,有些则不行

帮忙找下错!编译没错,运行不通过问题~试过多组数据,有些通过,有些则不行,请指点一下好吗?先谢了~~


year是年,
yearday是天数,
若year和yearday合理,
则*pmonth和*pday是计算得出的月和日,函数返回1;
否则,函数返回0。


int month_day(int year, int yearday, int *pmonth, int *pday)  

{
 int i=0,month=1,day,days=0,total_day,*day_tab;
 int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
 if(year%4==0&&year%100!=0||year%400==0)   
  {
  day_tab=b;
  total_day=366;
  }
 else  
  {
  day_tab=a;
  total_day=365;
  }
 if(yearday<=total_day)
  {
  while(days<yearday)
  {
  days=days+*(day_tab+i);
  i++;
  month=i;
  *pmonth=month;
  if(day<yearday)
  {day=yearday-days;   
  *pday=day;}
  }
  return (1);}
 else
  return (0);
}

回复列表 (共4个回复)

沙发

int month_day(int year, int yearday, int *pmonth, int *pday)  

{
    int i=1,month=1,days=0,total_day,*day_tab;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    if(year%4==0&&year%100!=0||year%400==0)   
    {
        day_tab=b;
        total_day=366;
    }
    else  
    {
        day_tab=a;
        total_day=365;
    }
    if(yearday<=total_day)
    {
        days=*day_tab;
        while(days<yearday)
        {
            days=days+*(day_tab+i);
            i++;
            
        }
        month=i;
        *pmonth=month;             
        *pday=yearday-(days-*(day_tab+i-1));
            
        return (1);
    }
    else
        return (0);
}

板凳

你的这段代码中:
if(day<yearday)
  {day=yearday-days;   
  *pday=day;}
  }
day是有问题的,它没有初始化,不知道运行的时候是神马值,
我怀疑这里是拼写错误,应该改为:
if(days<yearday)
  {day=yearday-days;   
  *pday=day;}
  }

3 楼


多谢哈~就是这里出问题了,漏了一个s

4 楼

还有,函数里的*pday的值应该初始化为yearday,
否则当yearday为 1 至31时*pday都不会被赋值。
最后,有一些变量是不必要的,比如说day
这样的运行效率不好

我来回复

您尚未登录,请登录后再回复。点此登录或注册