查找经过的时间

Finding the elapsed time

本文关键字:时间 经过 查找      更新时间:2023-10-16

这是我目前所做的。我正在学习结构,我必须在作业中使用结构。我不知道我的代码出了什么问题。当我调试时,每小时,每分钟,每秒都是0。请看看我的代码。

#include <stdio.h>
struct calculate
{
    int hours;
    int minutes;
    int seconds;
};
struct calculate N1;
struct calculate N2;
int resulthr, resultmin, resultsec;
int substract(struct calculate N1, struct calculate N2)
{
    resultsec = N2.seconds - N1.seconds;
    if (resultsec < 0)
    {
        resultsec = 60 + resultsec;
        --N2.minutes;
    }
    resultmin = N2.minutes - N1.minutes;
    if (resultmin < 0)
    {
        resultsec = 60 + resultmin;
        --N2.hours;
    }
    resulthr = N2.hours - N1.hours;
    if (resulthr < 0)
    {
        resulthr = 24 + resultsec;
    }
    return 0;
}
int main(void)
{
    printf("Enter two times.(hh:mm:ss) ");
    scanf("%i:%i:%i", &N1.hours, &N1.minutes, &N1.seconds);
    scanf("%i:%i:%i", &N2.hours, &N2.minutes, &N2.seconds);
    int substract(calculate N1, calculate N2);
    printf("The elasped time is %i:%i:%i.n", resulthr, resultmin, resultsec);
    return 0;
}
https://i.stack.imgur.com/VlYVL.png

main函数中的int substract(calculate N1, calculate N2);行不调用先前定义的subtract方法,但它实际上声明了另一个同名的函数。要实际调用该方法,可以这样写:

   int res = subtract(N1, N2);

之后res应该是0,(全局)变量resulthr,resultmin,resultsec应该是期望的值。

调用 substrate (N1, N2);代替int substrate (calculate N1, calculate N2);在main函数

你是在声明它,而不是调用它。