Esta pregunta requiere escribir un programa para calcular el tiempo dedicado a todo el viaje en función de la hora de salida y la hora de llegada del tren.
Formato de entrada:
Ingrese dos números enteros positivos de 4 dígitos en una línea, separados por espacios, que representan respectivamente la hora de salida y la hora de llegada del tren. El formato de cada hora es de 2 dígitos para las horas (00-23) y 2 dígitos para los minutos (00-59), asumiendo que la salida y la llegada son dentro del mismo día.
Formato de salida:
Imprima el tiempo utilizado para el viaje en una línea, en el formato "hh: mm", donde hh son 2 dígitos para las horas y mm son 2 dígitos para los minutos.
Muestra de entrada:
1201 1530
Salida de muestra:
03:29
Código:
# include <stdio.h>
# include <stdlib.h>
int main() {
int start,end,x,y;
int hour,minute;
scanf("%d %d",&start,&end);
y = (end / 100) - (start / 100);
// 分钟可能借位
x = (end % 100) - (start % 100);
hour = (x >= 0) ?y:(y - 1);
minute = (x >= 0)?x:(x + 60);
printf("%02d:%02d",hour,minute);
return 0;
}
Enviar captura de pantalla:
Ideas de resolución de problemas:
Esta pregunta debería ser la más difícil hasta ahora, pero la pregunta puede ser aún más difícil: puede extenderse a no el mismo día o incluso durante todo el año. Esta pregunta solo tiene en cuenta el mismo día, primero usamos /
y %
obtenemos por separado ¡Valores enteros de horas y minutos!
- Encontró que cuando el tiempo
end
ystart
cuando la hora es igual a un valor entero, el resultado es 0, pero nuestra salida está00:XX
en la forma de lo que se usa aquí%02d
significa que la salida entera es dos, cuando no queda suficiente tiempo dos arriba 0 - Luego descubrí que a
minute
veces el resultado es un número negativo. Por ejemplo1235 1401
, en nuestra vida diaria, necesitamos pedir prestado y decir cuánto tiempo pasamos en la carretera. Por lo tanto, considereminute
sumar 60 cuando la resta se vuelva negativa.hour
Reste 1 del valor de tiempo, y el tiempo transcurrido es el resultado correcto! - Por lo tanto, usamos el
C
único operador ternario aquí表达式1 ? 表达式2 : 表达式3
, lo que significa que cuando se establece la expresión 1, nuestro valor está determinado por la expresión 2, de lo contrario, ¡está determinado por la expresión 3! Por supuesto, también puede usar laif——else if——else
forma tradicional , ¡pero el código es relativamente más!