问题标题: 酷町堂:1325

0
0
已解决
李宜和
李宜和
高级启示者
高级启示者

题目链接: 酷町堂:1325

知识点:数学

为什么错?

#include<iostream> 
#include<iomanip> 
#include<cmath> 
#include<cstdio> 
using namespace std;
int ny(int n,int m){//判断函数
    if(n>2021&&n<1){
        return 0;
    }
    if(m>12&&m<1){
        return 0;
    }应该出错在这两个if 
    if(n%4==0||n%400==0&&m==2){
        return 29;
    }else if(m==1){
        return 31;
    }else if(m==2){
        return 28;
    }else if(m==3){
        return 31;
    }else if(m==4){
        return 30;
    }else if(m==5){
        return 31;
    }else if(m==6){
        return 30;
    }else if(m==7){
        return 31;
    }else if(m==8){
        return 31;
    }else if(m==9){
        return 30;
    }else if(m==10){
        return 31;
    }else if(m==11){
        return 30;
    }else if(m==12){
        return 31;
    }
}
int main(){ 
    int a,b;
    cin>>a>>b;
    if(ny(a,b)==0){//判断年月日
        cout<<"Error!";
    }else{
        cout<<ny(a,b);
    }
    return 0; 
}
(样例2不对,输出17......)

 


0
已采纳
熊智晖
熊智晖
高级天翼
高级天翼

把13行if里面内容改为:(n%4==0&&n%100!=0||n%400==0)&&m==2

望采纳

0
我要回答