Experimento 2-2-9 Cálculo del tiempo de funcionamiento del tren (15 minutos)

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:

Inserte la descripción de la imagen aquí

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 endy startcuando la hora es igual a un valor entero, el resultado es 0, pero nuestra salida está 00:XXen la forma de lo que se usa aquí %02dsignifica que la salida entera es dos, cuando no queda suficiente tiempo dos arriba 0
  • Luego descubrí que a minuteveces el resultado es un número negativo. Por ejemplo 1235 1401, en nuestra vida diaria, necesitamos pedir prestado y decir cuánto tiempo pasamos en la carretera. Por lo tanto, considere minutesumar 60 cuando la resta se vuelva negativa. hourReste 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 la if——else if——elseforma tradicional , ¡pero el código es relativamente más!

Supongo que te gusta

Origin blog.csdn.net/weixin_43862765/article/details/114387190
Recomendado
Clasificación