C 返回具有结构的函数时,为什么会出现计算错误

C 返回具有结构的函数时,为什么会出现计算错误,c,function,date,struct,arguments,C,Function,Date,Struct,Arguments,我试图找出两个日期之间经过的天数。但是,对于某些日期,程序打印两个日期之间的天数是错误的 过去天数的公式为:N=1461 x f(年、月)/4+153 x g(月)/5+天 在我的程序中,我将f和g定义为根据用户输入返回不同年和月值的函数 主要问题可能在于我如何使用日期结构中的局部变量扫描用户输入 N1是第一个日期经过的天数。N2是第二次约会 以下是我的书面代码: #include <stdio.h> #include <stdbool.h> #include <s

我试图找出两个日期之间经过的天数。但是,对于某些日期,程序打印两个日期之间的天数是错误的

过去天数的公式为:N=1461 x f(年、月)/4+153 x g(月)/5+天

在我的程序中,我将f和g定义为根据用户输入返回不同年和月值的函数

主要问题可能在于我如何使用日期结构中的局部变量扫描用户输入

N1是第一个日期经过的天数。N2是第二次约会

以下是我的书面代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
struct date {
        int month;
        int day;
        int year;
    };

int f( int theyear,  int themonth){
    if (themonth <=2)
        theyear = theyear-1;
    else
        theyear =theyear; 
    return theyear;
}

int g( int Month){
    if (Month<=2)
        Month=Month+13;
    else 
        Month = Month+1;

    return Month;
}

int main()

{

    struct date time1, time2;
    int N1; int N2;



    printf("Enter time1 (mm,dd,yyyy): ");
    scanf("%i%i%i", &time1.month, &time1.day, &time1.year);

    printf("Enter time2 (mm,dd,yyyy): ");
    scanf("%i%i%i", &time2.month, &time2.day, &time2.year);
    N1=1461 * f(time1.year,time1.month) / 4 + 153 * g(time2.month) / 5 +3;
    N2 = 1461 * f(time2.year,time2.month)/4 +153 * g(time2.month)/5 +21;



    printf("%d \n",abs(N1 -N2));

    return 0;

}
#包括
#包括
#包括
结构日期{
整月;
国际日;
国际年;
};
整数f(整数年,整数月){
如果(第个月变化


请输入和输出示例。告诉您的用户避免某些日期组合,并将其称为“功能”。然后,在修复后,您可以将其宣传为具有“新功能!!”或者..举一些例子。你试过调试你的问题吗?当然我提供了输入/输出!我不确定这是否有效Jongware,我只是试着确保我的程序完全工作。
f()
g()的方程是什么
?你是怎么知道的?干得好!哈哈,我想知道为什么他用a+3表示N1,a+21表示N2,然后回到公式,应该是天数而不是固定的数字
N1=1461 * f(time1.year,time1.month) / 4 + 153 * g(time2.month) / 5 +3;
N2 =1461 * f(time2.year,time2.month)/4 +153 * g(time2.month)/5 +21;
N1=1461 * f(time1.year,time1.month) / 4 + 153 * g(time1.month) / 5 + time1.day;
N2 =1461 * f(time2.year,time2.month)/4 +153 * g(time2.month)/5 + time2.day;