我正在编写一个C程序,以24小时格式表示一天的时间值,以及类似格式(正面或负面)的持续时间。该程序应计算持续时间后的24小时时间(即开始+持续时间=结束)。例如,1345和345将输出1730。
但是,我不知道如何处理不正确的输入。例如,不应接受2372或2520之类的值。同样,如果我有(例如)100和-200,我应该得到2300作为输出而不是-100。简而言之,我知道前两个数字应该是mod 24,最后两个数字应该是mod 60,但我不知道如何将这些操作应用于输入。任何人都可以提供关于我如何做到这一点的任何提示吗?
答案 0 :(得分:0)
将输入读作int
,将小时与小时分开并检查两者:
int tm, h, m, is_negative = 0;
scanf("%d", &tm);
if (tm < 0) {
is_negative = 1;
tm = -tm;
}
m = tm % 100; // separates the two last digits
h = tm / 100; // excludes the two last digits
if (m > 59) {
handle_error();
}
if (h > 23) {
handle_error();
}