我的计划旨在实现这一目标
(A)编写一个名为的 C 函数larger()
,返回传递给它的任意两个日期的较晚日期。例如,如果将日期 10/9/2001 和 11/3/2001 传递给larger()
,则将返回第二个日期。
(B)在一个完整的单元中创建为 (A) 编写的 large() 函数。将 large() 返回的日期结构存储在单独的日期结构中,并显示返回数据结构的成员值。
我正在为我的 C 语言课程解决这个问题。我一切都很顺利(我想),除了我不断收到“较大的日期是:0/0/0”,无论我输入什么。所以我开始修修补补,现在我无法摆脱语法错误,或者找出我的 0/0/0 问题。显然,日期并没有回来。我在这方面还是很新的(在结构方面也很新),所以任何帮助都会很棒!
给我语法错误的行在 main() 的底部附近:
DATES result[NUM] = larger(DATES user[NUM]);
完整代码:
#include <stdio.h>
#define NUM 2
struct Dates
{
int month;
int day;
int year;
};
typedef struct Dates DATES;
DATES larger(DATES[NUM]);
DATES more;
int main()
{
DATES user[NUM];
printf("You will enter two dates, and the program will return the larger.\n");
while (user[0].month < 1 || user[0].month > 12)
{printf("\nPlease enter the first month, 1-12: ");
scanf("%d", &user[0].month);}
while (user[0].day < 1 || user[0].day > 31)
{printf("\nPlease enter the first day, 1-31: ");
scanf("%d", &user[0].day);}
while (user[0].year < 1)
{printf("\nPlease enter the first year: ");
scanf("%d)", &user[0].year);}
printf("\nDate entered: %d/%d/%d.\n", user[0].month, user[0].day, user[0].year);
while (user[1].month < 1 || user[1].month > 12)
{printf("\nPlease enter the first month, 1-12: ");
scanf("%d", &user[1].month);}
while (user[1].day < 1 || user[1].day > 31)
{printf("\nPlease enter the first day, 1-31: ");
scanf("%d", &user[1].day);}
while (user[1].year < 1)
{printf("\nPlease enter the first year: ");
scanf("%d)", &user[1].year);}
printf("\nDate entered: %d/%d/%d.\n\n", user[1].month, user[1].day, user[1].year);
DATES result[NUM] = larger(DATES user[NUM]); /* Problem here */
printf("The larger date is %d/%d/%d.\n\n", result[0].month, result[0].day, result[0].year);
system("pause");
return 0;
}
DATES larger(DATES more[NUM])
{
int days0;
int days1;
days0 = (more[0].month*31)+(more[0].day)+(more[0].year*365);
days1 = (more[1].month*31)+(more[1].day)+(more[1].year*365);
if (days1 > days0)
{more[0] = more[1];}
return (more[0]);
}