我有這種情況。合併if語句與邏輯相關條件
**更新了我的代碼,它可以以我想要的方式工作。 *澄清代碼的要求(全程序)
如果我給
開始時間:2時30分30秒
停止時間:2點30分25秒
我應該得到
已過時:23:59:55
得到它了嗎?它穿過午夜......進入第二天......
這就是我想要的,它的工作原理!
我有這五個if語句與邏輯相關的條件。
該計劃得到所需的輸出,但有可能結合這些,如果以任何方式聲明(不是使用「或」經營者和賺取豐厚的條件等;像嵌套,如果也許有條件的經營者
//time elapsed program
//including support for time crossing midnight into the next day
#include<stdio.h>
struct time
{
int hour;
int minute;
int second;
};
struct time timeElapsed(struct time, struct time);
int main()
{
struct time start, stop, elapse;
printf("Enter start time (hh:mm:ss) : ");
scanf("%d:%d:%d", &start.hour, &start.minute, &start.second);
printf("Enter stop time (hh:mm:ss) : ");
scanf("%d:%d:%d", &stop.hour, &stop.minute, &stop.second);
elapse = timeElapsed(start, stop);
printf("The time elapsed is : %.2d:%.2d:%.2d", elapse.hour, elapse.minute, elapse.second);
return 0;
}
struct time timeElapsed(struct time begin, struct time end)
{
struct time elapse;
if(end.hour < begin.hour)
end.hour += 24;
if(end.hour == begin.hour && end.minute < begin.minute)
end.hour += 24;
if(end.hour == begin.hour && end.minute == begin.minute && end.second < begin.second)
end.hour += 24;
if(end.second < begin.second)
{
--end.minute;
end.second += 60;
}
if(end.minute < begin.minute)
{
--end.hour;
end.minute += 60;
}
elapse.second = end.second - begin.second;
elapse.minute = end.minute - begin.minute;
elapse.hour = end.hour - begin.hour;
return elapse;
}
這有什麼錯用||運營商? – OldProgrammer
你是在效率還是可讀性? – JimmyNJ
OldProgrammer沒有這麼說。他問你爲什麼堅持不使用'||'操作符。它可以簡化您的代碼(例如,以避免編寫'聲明1','聲明2'或'聲明3'一次以上),但是避免大的條件你(我相信任意)約束的作品針對。也可以使用的時間數學(分鐘,小時,秒之間的關係),但你有沒有做到這一點,所以任何人給你一個答案,基於對你的功課,簡直是不負責任的。 – Peter