我需要根据' d yyyy'中给出的2个输入日期执行以下计算。格式
1. if year_date1 > year_date2 // output 10000
2. else if month_date1 > month_date2 // output diff_month * 500
3. else if day_date1 > day_date2 // output diff_day * 15
4. else // output 0
e.g。
输入 -
2 7 1014 // date1
1 1 1015 // date2
输出
0
但是对于同样的输入案例,为什么我会得到' 3000'而不是' 0'?
码
int main(){
int dif_day,dif_month,dif_year;
int day[2],month[2],year[2];
for(int i = 0; i < 2; i++)
cin >> day[i] >> month[i] >> year[i];
dif_day = day[0] - day[1];
dif_month = month[0] - month[1];
dif_year = year[0] - year[1];
if(dif_year > 0){
cout << 10000;
}
else if(dif_month > 0){
cout << dif_month * 500;
}
else if(dif_day > 0){
cout << dif_day * 15;
}
else
cout << 0;
return 0;
}
答案 0 :(得分:0)
您的代码会减去year
,month
和date
并进行一些适当的计算。
在您的示例中,dif_year
为-1
,因此
if(dif_year > 0)
不成立。然后dif_month
出现在6.下一个条件是
if (dif_month > 0) // dif_month == 6
cout << dif_month*500 // 6*500 = 3000
这解释了观察输出的原因。
答案 1 :(得分:0)
dif_year不大于0而是-1,所以程序转到第一个else if语句,其中dif_month大于0(6)并执行6 * 500,即3000并输出。其余的else语句都被跳过了。
要获得0,第一个日期的所有数字都必须小于第二个日期的数字。例如,1 1 1014 2 7 1015将输出0。
非常期待该计划的行为。