我定义了函数everymonth
。我想使用函数的返回值。但是,根据语句int*p=everymonth(i);
,
我无法按预期使用数组monthdays
。
起初,我认为数组monthdays
的范围是错误的,所以我
将其定义为全局变量。但这也是不正确的。
int * everymonth(int year)
{
int monthdays[12]= {31,59,90,120,151,181,212,243,273,304,334,335};
if(year%400==0 ||(year%4==0 && year%100!=0))
{
for(int i=1; i<12; i++)
{
monthdays[i]++;
}
}
return q;
}
int main()
{
int sum=0;
int *p=everymonth(i);//i is a Constant
for(int i=0; i<12; i++)
{
sum=sum+p[i];
printf("%d\n",p[i]);
}
}
答案 0 :(得分:0)
您应该写下您打算做的事情。
您的函数everymonth
返回q
而不定义它。我假设您想返回monthdays
,因为否则在返回之前修改它是没有意义的。
如果返回monthdays
(一个局部变量),那肯定是一个问题。如果您使用monthdays
,则该问题在首次调用该函数时已解决,但在第一个leap年之后将出现问题。
然后在main
中,计算每个月末的天数之和。因此,对于2月,您将拥有“ 31+(31 + 28)”,依此类推。