我正在做我的家庭作业..... :(使用三项式算子(?)_oo?oo:oo
#include <stdio.h>
int main()
{
int time1, time2, gap;
int hour, minute;
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
printf("Enter first time: \n");
scanf("%d", &time1);
printf("Enter second time: \n");
scanf("%d", &time2);
gap = time2 - time1;
gap > 0 ? hour = gap/100 : hour = (2400 - gap)/100;
gap > 0 ? minute = gap%100 : minute = (2400 - gap)%100;
print("The gap of these times: %d hours, %d minutes", hour, minute);
}
gap&gt; 0? gap / 100 =小时:(2400 - 缺口)/ 100 =小时;
gap&gt; 0?分钟=差距%100:分钟=(2400 - 差距)%100;
这两个句子是错误的(左值作为赋值的左值)
我想要的结果
第一次输入: 1925年
第二次输入: 2358
这些时间的差距:4小时33分钟
或
第一次输入: 1540
第二次输入: 1630
这些时间的差距:0小时50分钟
或
第一次输入: 0730
第二次输入: 0720
这些时间的差距:23小时50分钟
答案 0 :(得分:4)
尝试改为:
hour = (gap > 0) ? gap/100 : (2400 - gap)/100;
minute = (gap > 0) ? gap%100 : (2400 - gap)%100;
答案 1 :(得分:1)
由于两个条件表达式都评估相同的条件,因此在if
语句中组合赋值会更清晰:
if (gap > 0) {
hour = gap/100;
minute = gap%100;
} else {
hour = (2400 - gap)/100;
minute = (2400 - gap)%100;
}
您可以通过添加新变量来进一步简化此操作:
int numerator = gap > 0 ? gap : 2400-gap;
hour = numerator/100;
minute = numerator%100;