编写一个函数,该函数将接收年份,如果年份是return年则返回“ y”,否则返回“ n”。从主函数中调用函数

时间:2018-11-30 01:44:15

标签: c

这是我的代码,但是由于某种原因,它没有在编译器中打印任何内容。请帮忙! :(

#include <stdio.h>
int leapYear (void);
int leapYear ()
{
    printf("Please enter a year: ");
    scanf("%d", &year);
    if ((year % 400) == 0)
    {
        printf("%d is a leap year \n", year);
    }
    else
        printf("%d is not a leap year \n", year);
    return (year);
}

int main()
{
    int leapYear();
}

1 个答案:

答案 0 :(得分:1)

#include <stdio.h>
#include <assert.h>

int isleap(int year)
{
    assert(year > 0 && "isleap: Year must be positive");
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

int main(void)
{
    int isleap(int); // declare the function, naming the types of the arguments

    printf("%s\n", isleap(2002) ? "Leap year" : "Not leap year");
}

您的leap年算法是错误的。我已经修改了。如果满足以下至少一项条件,那么一年就是is年:

  • 年份可被四整除,但不可被100除。
  • 年份可被400整除。

从侧面讲,最好将算法和结果显示在两个不同的函数中分开。 isleap只是告诉我们给定的一年是否飞跃。 main依靠isleap对此进行报告,然后打印一条适当的消息。这使我们的程序更易于(人类)阅读和扩展。