#include <iostream>
using namespace std;
int main() {
int what_year;
cout << "Enter calendar year ";
cin >> what_year;
if (what_year - (n * 4) = 0 ) {
cout << "leap year";
}
else
{
cout << "wont work";
}
system("Pause");
return 0;
}
尝试为类创建一个程序,找到一个闰年..不知道如果一个整数可以被一个整数整除,怎么问C ++?
答案 0 :(得分:9)
闰年规则是
if year modulo 400 is 0 then
is_leap_year
else if year modulo 100 is 0 then
not_leap_year
else if year modulo 4 is 0 then
is_leap_year
else
not_leap_year
http://en.wikipedia.org/wiki/Leap_year#Algorithm
您可以使用modulo operator查看一个数字是否可以被另一个数字整除,即如果该部门没有余数。
2000%400 = 0 //甚至可以被400整除
2001%400 = 1 //不能被400整除
有趣的是,一些着名的软件实施并没有应用“400”部分,这导致2000年2月29日不存在这些系统。
答案 1 :(得分:4)
改为使用
bool bLeapYear = false;
if ((what_year % 4) ==0) {
if ((what_year % 100) == 0) {
bLeapYear = ((what_year % 400) == 0);
} else {
bLeapYear = true;
}
// leap year
}
这将除以4后的剩余时间,并测试是否为零。使用=
而不是==
时也遇到了问题 - 后者测试是否相等,前者指定了值。
编辑:根据史蒂夫的评论编辑。
答案 2 :(得分:3)
使用模数函数。
if ((year % 4) == 0)
{
//leap year
}
请注意,这并不能解释100年和400年的跳跃。
正确的代码就像
if(((year%4) == 0) && (((year%100)!=0) || ((year%400) == 0))
{
//leap year
}
答案 3 :(得分:1)
根据决定一年是否跳跃的一些规则,一年应该可以被4整除,而那些可以被100整除的年份,它也应该被400整除。
int year;
cout << "Enter a year: ";
cin >> year;
if (year%4 == 0) {
if (year%100 == 0) {
if (year%400 == 0) {
cout << year << " is a leap year.";
}
else {
cout << year << " is not a leap year.";
}
}
else {
cout << year << " is a leap year.";
}
}
else {
cout << year << " is not a leap year.";
}
return 0;}