2016-09-28 49 views
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

+0

只需使用调试器。 – ilotXXI

回答

0

请致电减(N1,N2);而不是int substract(计算N1,计算N2);的主要功能。

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

+0

谢谢。另外,我在int减法函数中出现错误... resultsec = 60 + resultmin应该是resultmin = 60 + resultmin – Newbiehere

2

main功能不调用先前定义subtract方法内部的线int substract(calculate N1, calculate N2);,但它实际上声明了另一个同名的功能。 要实际调用的方法写:

int res = subtract(N1, N2); 

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

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