gpt4 book ai didi

c - 为什么返回带结构的函数会出现计算错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:49 25 4
gpt4 key购买 nike

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

经过天数的公式为:N=1461 x f(year,month)/4+ 153 x g(month)/5 +day

在我的程序中,我将 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;

}

非常感谢。 :)

示例输入/输出:

输入时间 1 (mm,dd,yyyy):04 10 1994输入时间 2 (mm,dd,yyyy):03 10 199418

如您所见,它打印出 18。但是,它应该是一个月中的天数。

最佳答案

改变

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;

?

关于c - 为什么返回带结构的函数会出现计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20691857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com