我正试图从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-此问题中的代码可能与其他问题非常相似。这不是重复的,因为问题是完全不同的问题。
答案 0 :(得分:0)
calculate_iso_week_day(ordinal_day, week_day, year);
好的,让我们看看这些参数在哪里。 ordinal_day
在calculate_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
之间的某个地方。