判断输入是否为闰年的C++程序
C++ program for checking whether the input is a leap year
我是 Tony,我是 C++ 编程的新手。我想问一个与创建一个检查闰年的程序有关的问题。
在下面的代码中,我尝试创建一个布尔函数来检查输入是否是闰年。如果输入为负,我会 cout "Bye!" 并立即停止程序。如果输入是正数,那么我将使用我构建的 bool 函数检查它是否是闰年,直到输入是负数然后我将退出程序。
但是,我找不到我犯了什么错误,目前的情况是,当我输入正值时,没有生成结果。如果你有空请帮忙。非常感谢你。 :)
#include <iostream>
#include <cmath>
#include <string>
#include <iomanip>
using namespace std;
bool leap_year(int year);
int main()
{
int year;
while (cout << "Enter a year (or negative number to quit): ")
{
cin >> year;
if (leap_year(year) == false && year <0 )
{
cout << "Bye!" << endl;
}
break;
if (leap_year(year) == false && year >0 )
{
cout << "The year is not a leap year." << endl;
}
if (leap_year(year) == true && year >0 )
{
cout << "The year is a leap year." << endl;
}
return 0;
}
}
bool leap_year(int year)
{
bool is_leap_year = false;
if (year % 4 == 0)
{
is_leap_year = true;
}
if (year % 100 == 0)
{
is_leap_year = false;
}
if (year % 400 == 0)
{
is_leap_year = true;
}
return is_leap_year;
}
首先,您(应该)想要一个 while(true)
循环而不是 while(std::ostream)
循环。
所以替换
while (cout << "Enter a year (or negative number to quit): ")
{
与
while (true)
{
cout << "Enter a year (or negative number to quit): ";
正如@paddy 指出的那样,您可以检查 std::ostream 的 return 类型以在打印时查找错误。但在这个简单的程序中,我怀疑它是否有必要。
然后你的 if 语句外有 break
,它总是会跳出程序(无论输入如何)。替换
if (leap_year(year) == false && year <0 )
{
cout << "Bye!" << endl;
}
break;
与
if (year < 0)
{
cout << "Bye!" << endl;
break;
}
(不需要检查负输入是否是闰年。用if-else
statments可以实现只输入1个if
语句,因此也可以替换if(leap_year(year) == false && year < 0)
只有 if (year < 0)
; 就像我一样。)
当您将此应用于所有语句(不更改其内部逻辑)并在循环末尾删除 return 0;
时,您将获得所需的程序流。删除 using namespace std;
也更好(阅读 here 为什么)。您也不需要包含 <iomanip>
、<cmath>
或 <string>
。完整代码:
#include <iostream>
bool leap_year(int year);
int main() {
int year;
while (true) {
std::cout << "Enter a year (or negative number to quit): ";
std::cin >> year;
if (year < 0) {
std::cout << "Bye!" << std::endl;
break;
}
else if (leap_year(year)) {
std::cout << "The year is a leap year." << std::endl;
}
else {
std::cout << "The year is not a leap year." << std::endl;
}
}
}
bool leap_year(int year){
bool is_leap_year = false;
if (year % 4 == 0){
is_leap_year = true;
}
if (year % 100 == 0){
is_leap_year = false;
}
if (year % 400 == 0){
is_leap_year = true;
}
return is_leap_year;
}
我是 Tony,我是 C++ 编程的新手。我想问一个与创建一个检查闰年的程序有关的问题。
在下面的代码中,我尝试创建一个布尔函数来检查输入是否是闰年。如果输入为负,我会 cout "Bye!" 并立即停止程序。如果输入是正数,那么我将使用我构建的 bool 函数检查它是否是闰年,直到输入是负数然后我将退出程序。
但是,我找不到我犯了什么错误,目前的情况是,当我输入正值时,没有生成结果。如果你有空请帮忙。非常感谢你。 :)
#include <iostream>
#include <cmath>
#include <string>
#include <iomanip>
using namespace std;
bool leap_year(int year);
int main()
{
int year;
while (cout << "Enter a year (or negative number to quit): ")
{
cin >> year;
if (leap_year(year) == false && year <0 )
{
cout << "Bye!" << endl;
}
break;
if (leap_year(year) == false && year >0 )
{
cout << "The year is not a leap year." << endl;
}
if (leap_year(year) == true && year >0 )
{
cout << "The year is a leap year." << endl;
}
return 0;
}
}
bool leap_year(int year)
{
bool is_leap_year = false;
if (year % 4 == 0)
{
is_leap_year = true;
}
if (year % 100 == 0)
{
is_leap_year = false;
}
if (year % 400 == 0)
{
is_leap_year = true;
}
return is_leap_year;
}
首先,您(应该)想要一个 while(true)
循环而不是 while(std::ostream)
循环。
所以替换
while (cout << "Enter a year (or negative number to quit): ")
{
与
while (true)
{
cout << "Enter a year (or negative number to quit): ";
正如@paddy 指出的那样,您可以检查 std::ostream 的 return 类型以在打印时查找错误。但在这个简单的程序中,我怀疑它是否有必要。
然后你的 if 语句外有 break
,它总是会跳出程序(无论输入如何)。替换
if (leap_year(year) == false && year <0 )
{
cout << "Bye!" << endl;
}
break;
与
if (year < 0)
{
cout << "Bye!" << endl;
break;
}
(不需要检查负输入是否是闰年。用if-else
statments可以实现只输入1个if
语句,因此也可以替换if(leap_year(year) == false && year < 0)
只有 if (year < 0)
; 就像我一样。)
当您将此应用于所有语句(不更改其内部逻辑)并在循环末尾删除 return 0;
时,您将获得所需的程序流。删除 using namespace std;
也更好(阅读 here 为什么)。您也不需要包含 <iomanip>
、<cmath>
或 <string>
。完整代码:
#include <iostream>
bool leap_year(int year);
int main() {
int year;
while (true) {
std::cout << "Enter a year (or negative number to quit): ";
std::cin >> year;
if (year < 0) {
std::cout << "Bye!" << std::endl;
break;
}
else if (leap_year(year)) {
std::cout << "The year is a leap year." << std::endl;
}
else {
std::cout << "The year is not a leap year." << std::endl;
}
}
}
bool leap_year(int year){
bool is_leap_year = false;
if (year % 4 == 0){
is_leap_year = true;
}
if (year % 100 == 0){
is_leap_year = false;
}
if (year % 400 == 0){
is_leap_year = true;
}
return is_leap_year;
}