私のプログラムはこれを達成するつもりです
(A)larger()
渡された任意の 2 つの日付のうち、後の日付を返すという名前の C 関数を作成します。たとえば、日付 10/9/2001 と 11/3/2001 が に渡されたlarger()
場合、2 番目の日付が返されます。
(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]);
}