从main()调用具有另一个函数参数的函数

时间:2018-10-26 09:39:05

标签: c

我正试图从main()函数调用一个函数来计算工作日,但是,这告诉我3个参数中的2个尚未声明。这两个参数也是在另一个函数中找到的参数,并且我确保已对两个函数都进行了返回,但仍然给我错误。最后一个参数也可以正常工作,因为在main()函数中也可以找到它的变量声明。

到目前为止,我已经尝试在主函数中执行以下操作:

int main (int argv, char **argc) 
{
int day;
int month;
int year;

day = get_integer();
month = get_integer();
year = get_integer();

printf("Ordinal Day: %d\n", calculate_ordinal_day(day, month, year, 
leap_year(year)));
calculate_iso_week_day(ordinal_day, week_day, year);
calculate_weeks_in_year(year);
/* calculate_week(year); */
return 0;
}

但是它给了我一个错误,我也不认为这是解决问题的方法。

我要从中获取参数的两个函数在这里:

int calculate_ordinal_day(int day, int month, int year, int isyearleap) {
int ordinal_day;

if (month == 1) {
    return day;
}
if (month == 2) {
    return day + 31;
}

ordinal_day = myFloor(30.6 * month - 91.4) + day;
if (isyearleap == 1) {
    return ordinal_day + 60;
}
return ordinal_day + 59;
}


int day_of_the_week(int year)
{
int week_day;
week_day = (1 + 5 * ((year - 1) % 4) + 4 * ((year - 1) % 100) + 6 * ((year - 
1) % 400) ) % 7;
if (week_day == 0) {
    week_day = 7;
}
printf("The day of the week is %d\n", week_day);
return week_day;
}

我尝试使用的功能是:

int calculate_iso_week_day(int ordinal_day, int week_day, int year)
{
int iso_day_of_the_week;
iso_day_of_the_week = (ordinal_day + day_of_the_week(year)) % 7;
printf("ISO Weekday: %d\n", iso_day_of_the_week);
return iso_day_of_the_week;
}

P.S-此问题中的代码可能与其他问题非常相似。这不是重复的,因为问题是完全不同的问题。

1 个答案:

答案 0 :(得分:0)

calculate_iso_week_day(ordinal_day, week_day, year);

好的,让我们看看这些参数在哪里。 ordinal_daycalculate_ordinal_day中定义。在main中看不到它,这就是它抱怨的原因。您是否打算使用calculate_ordinal_day的结果呢?如果是这样,请更改此内容:

printf("Ordinal Day: %d\n", calculate_ordinal_day(day, month, year, 
leap_year(year)));
calculate_iso_week_day(ordinal_day, week_day, year);

对此:

int ordinal_day = calculate_ordinal_day(day, month, year, leap_year(year));
printf("Ordinal Day: %d\n", ordinal_day);
calculate_iso_week_day(ordinal_day, week_day, year);

week_day类似。 main看不到。我会在您的main中推荐它:

int week_day = day_of_the_week(year);

分配year和调用calculate_iso_week_day之间的某个地方。