0

我正在编写一个 C 程序来获取一个以 24 小时格式表示一天中某个时间的值,以及一个类似格式(正或负)的持续时间。该程序应计算持续时间后的 24 小时时间(即开始 + 持续时间 = 结束)。例如,1345 和 345 将输出 1730。

但是,我不知道如何处理不正确的输入。例如,不应接受 2372 或 2520 之类的值。同样,如果我有(例如)100 和 -200,我应该得到 2300 作为输出而不是 -100。简而言之,我知道前两个数字应该是mod 24,后两个数字应该是mod 60,但是我不知道如何将这些操作应用于输入。任何人都可以提供有关我如何做到这一点的任何提示吗?

4

1 回答 1

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();
}
于 2012-10-24T05:15:07.513 回答