gpt4 book ai didi

c - 对于作业,我必须比较两个日期,使用 C 中的结构。我不确定我的逻辑是否错误

转载 作者:行者123 更新时间:2023-11-30 18:44:09 26 4
gpt4 key购买 nike

首先,我比较了两个日期并检查日期是否更早或是否相同。我不确定我的逻辑是否错误。 printf 语句似乎不起作用,它表示日期 1 较早或它们相同或日期 1 较晚。

#include<stdio.h>
#include<string.h>

struct dates
{
int month;
int date;
int year;
};

int compareDates(struct dates d1, struct dates d2)
{
printf(d2.year);
printf(d2.month);
printf(d2.date);

if(d2.year >= d1.year) // compares year
{
if(d2.month >= d1.month) // months
{
if(d2.date > d1.date)
{
printf("date 1 is earlier\n");
return - 1;
}
}
}

else if(d1.year == d2.year && d1.month == d2.month && d1.date == d2.date) // if they are the same
{
printf("They are the same\n");

return 0;
}

else
{
printf("D1 is later\n");
return 1;
}

}

int main()
{
struct dates d1;
struct dates d2;

printf("Enter year 1: ");
scanf("%d", &d1.year);

printf("Enter month 1: ");
scanf("%d", &d1.month);

printf("Enter date 1: ");
scanf("%d", &d1.date);

printf("Enter year 2: ");
scanf("%d", &d2.year);

printf(" Enter month 2: ");
scanf("%d", &d2.month);

printf("Enter date 2: ");
scanf("%d", &d2.date);

int return_value = compareDates(d1,d2);
}

最佳答案

compared the two dates and checked if the date is earlier or if it is the same. I am not sure as to if my logic is wrong here or what is.

printf(d2.year);肯定是错误的。试试printf("%d\n":, d2.year);

if(d2.month >= d1.month)只有 (d2.year == d1.year) 才有意义,不是(d2.year >= d1.year)

逐个比较成员。从最重要的开始。

int compareDates(struct dates d1, struct dates d2) {
if (d1.year != d2.year) return d1.year > d2.year ? 1 : -1;
if (d1.month != d2.month) return d1.month > d2.month ? 1 : -1;
return (d1.date > d2.date) - (d1.date < d2.date);
}
<小时/>

如果成员不在主要范围内,例如2019-11-15 < 2018-100-15,则需要附加代码.

关于c - 对于作业,我必须比较两个日期,使用 C 中的结构。我不确定我的逻辑是否错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58887814/

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