Richard175 2021-06-17 12:11 采纳率: 100%
浏览 75
已结题

c++ 三天打鱼两天晒网问题 4月31日不显示错误?

#include<iostream>
using namespace std;
int main()
{
    int year,mouth,day,total;
    int b,c,d,i;
    int a=0;
    {   cout<<"Please Enter the Date"<<endl;
        cout<<"Please Enter Year"<<endl;
        cin>>year;
        cout<<"Please Enter Mouth"<<endl;
        cin>>mouth;
        cout<<"Please Enter Day"<<endl;
        cin>>day;
    }//输入日期
    {   if(year>=1990)
            a++;
    }//判断year合法性,如合法a=1
    {   if(mouth>0&&mouth<13)
        a++;
    }//判断Mouth合法性 ,合法a=2
    {   if(day<32&&day>0)
            if((year%4==0&&year%100!=0)||year%400==0)//闰年下day合法性判断
            {   if(mouth==2)
                {   if(day<=29)
                        {
						a++;
						cout<<"ts1"<<a<<endl;
						}//如果闰年时为2月,天数如果小于等于29,正确则a++
                } 
				if(mouth==4,6,9,11) 
				{
				    if(day<=30)
                    {
					a++;
                    cout<<"ts2"<<a<<endl;
                    }
                }
                if(mouth==1,3,5,7,8,10,12)
                {
                    if(day<=31)
                        {a++;
                        cout<<"ts3"<<a<<endl;
                        } 
                } 
                
                
            }

            else //非闰年下day合法性判断
            {   if(mouth==2)
                    {
					if(day<=28)
                        a++;
						cout<<"ts4"<<a<<endl;
						}
                if(mouth==1,3,5,7,8,10,12)
                        {
						if(day<=31)
                            a++;cout<<"ts5"<<a<<endl; 
                        }
                if(mouth==4,6,9,11)
				    {
					if(day<=30)
                            a++;cout<<"ts6"<<a<<endl; 
                    }
            }
    }
    //合法a=3
    {   for(i=1990; i<year; i++)
            if((i%4==0&&i%100!=0)||i%400==0)
                b++;
            else c++;
    }//循环 闰年b+1 其他c+1
    {   if((year%4==0&&year%100!=0)||year%400==0)
            switch(mouth-1)//当年如果闰年下除当月外天数计算 
            {
            case 0:
                d=0;
                break;
            case 1:
                d=31;
                break;
            case 2:
                d=60;
                break;
            case 3:
                d=91;
                break;
            case 4:
                d=121;
                break;
            case 5:
                d=152;
                break;
            case 6:
                d=182;
                break;
            case 7:
                d=213;
                break;
            case 8:
                d=244;
                break;
            case 9:
                d=274;
                break;
            case 10:
                d=305;
                break;
            case 11:
                d=335;
                break;
            }
        else
            switch(mouth-1)//当年如果非闰年除当月外天数计算 
            {
            case 0:
                d=0;
                break;
            case 1:
                d=31;
                break;
            case 2:
                d=59;
                break;
            case 3:
                d=90;
                break;
            case 4:
                d=120;
                break;
            case 5:
                d=151;
                break;
            case 6:
                d=181;
                break;
            case 7:
                d=212;
                break;
            case 8:
                d=243;
                break;
            case 9:
                d=273;
                break;
            case 10:
                d=304;
                break;
            case 11:
                d=334;
                break;
            }
    };
    {   total=b*366+c*365+d+day;
    }//计算总日期
    if(a!=3)
        cout<<"Error"<<endl;//判断日期合法性 
    else
    {
        int x = total % 5;
        if (x >= 1 && x <= 3) {
            cout<<"今日他在打鱼"<<endl;
        }
        else {
            cout<<"今日他在晒网"<<endl;
        }//判断打渔
    }
    return 0;
}

我设置了如果正确就a++

r如果年月日全部正确则为3

现在是4月31日仍然执行了a++

mouth=4时却跳到if(mouth==1,3,5,7,8,10,12)执行

题目是从1990年1月1日开始三天打鱼两天晒网

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-06-17 13:50
    关注

    if(mouth==1,3,5,7,8,10,12)

    这个代码不能这么写,没有这种判断方法,达不到你想的效果的。只能 if(mouth==1 || mouth==3 || ...这样写

    另外月的单词是month,mouth是嘴

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改