C++,一位数组

来源:百度知道 编辑:UC知道 时间:2024/09/22 17:29:52
看这个程序:
int main()
{
int a,year,mon,day,s=0;

cin >> year >> mon >> day;

if(year%4==0&&year%100!=0||year%400==0)
a=29;
else
a=28;
int month[12]={31,a,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<mon-1;i++)
s+=month[i];

s+=day;

cout << s << endl;
return 0;
}
可当我试图在开始时定义month[12]时,我发现a的值为0,并且后来的if语句似乎对它毫无影响。似乎初始化给数组之后,变量a便无法在后面被赋值。
是这样吗?

不是这样的,根据你给的YEAR的值来判断给A如何赋值,之后在任何时候A的值都是可以改变的,我运行了下,year=2009,mon=2,day=2,输出的A是28不是0
楼主可依试试,希望对你有帮助!

这种程序一般定义 month[2][12] 非闰年,闰年数组。
leap = 1, 用 month[1][..], leap = 0, 用 month[0][..]
也就是 month[leap][..].
初始化,直接填 {{...28...},{..29....}}

这个程序没问题啊,a有可能会被赋28和29两种值,我编译过了,没问题的!

好像没问题啊
不就是用来计算一年的天数的吗

s+=day;有意义?