【问题标题】:function in c++ that takes the month number and prints the number of days for the monthc++ 中的函数,它获取月份数并打印该月的天数
【发布时间】:2018-01-09 14:10:17
【问题描述】:

代码在我添加之前有效,如果用户输入的数字高于 12,我希望它说“一个月内不是数字”。我试图让 if 和 else 工作,但它总是停止程序我也是编程新手,因为格式不好。任何帮助都是好的。谢谢。

#include <iostream>
using namespace std;

int main()
{

int month = 0;
int days;

cout << "Month: ";
cin >> month;

if (month != 1 || month != 2 || month != 3 || month != 4 || month != 5 || 
    month != 6 || month != 7 || month != 8 || month != 9 || month != 10 || 
    month != 11 || month != 12 ) {

cout<<"not a number for a month";

return 0;

}


if (month == 4 || month == 6 || month == 9 || month == 11)
    days = 30;

else 

days = 31;

cout << days;

return 0;
}

【问题讨论】:

  • 你想要&amp;&amp;。或者你可以if (month &lt; 1 || month &gt; 12) {...
  • 因此,如果您输入2monthmonth != 1 将是true,您将进入if。如果你按照 Bathsheba 的指示修复它,它会稍微好一点:它会在 2 月返回 31,但至少它会在所有其他月份工作:-)
  • 了解 || 的基本区别和 && 运算符。你的基础不清楚。
  • 2 月 31 日?那是我的生日,我很高兴终于有人写了一个程序来识别那个日期!
  • 我亲爱的妻子在 2 月 29 日向我求婚:确保你也包括那个。

标签: c++ if-statement days


【解决方案1】:

将完全邪恶的 if 条件替换为

if (month < 1 || month > 12){

除了可怕之外,您还错误地使用了||:您的条件始终是true。你需要&amp;&amp;

然后修复month == 2 的特殊情况。那时你需要知道年份。

根据经验:如果您发现自己编写的代码非常乏味,那么可能有一种更简单的方式来表达您的意图。

【讨论】:

  • 也使用 Switch 语句 ;)
  • 而对于日期时间相关的业务,使用库函数。那些是讨厌的
  • @YSC:当然。我使用 Boost 的日期和时间库,非常棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
相关资源
最近更新 更多