0

这就是我到目前为止所拥有的。我正在学习结构,我不得不使用结构来完成作业。我不明白我的代码有什么问题。当我调试时,我得到 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;
}

http://i.stack.imgur.com/VlYVL.png

4

2 回答 2

2

int substract(calculate N1, calculate N2);函数内的行main并没有调用之前定义的subtract方法,但它实际上声明了另一个同名的函数。要实际调用该方法,请编写:

   int res = subtract(N1, N2);

之后res应该是 0 并且(全局)变量resulthr,resultmin,resultsec应该具有所需的值。

顺便说一句:请阅读有关全局和局部变量以及传递参数的信息。

于 2016-09-28T07:31:58.330 回答
0

调用减法(N1,N2);而不是int substract(计算 N1,计算 N2);在主函数中。

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

于 2016-09-28T08:30:48.413 回答