编写程序,要求输入年月日,输出该日是本年中的第几天

来源:互联网 发布:java list 编辑:程序博客网 时间:2024/05/22 04:49

定义一个结构体变量(包括年、月、日),编写程序,要求输入年、月、日,程序能计算并输出该日在本年中是第几天。注意闰年问题。


#include "stdafx.h"
#include<iostream>
using namespace std;


struct NYR                    //定义结构体变量NYR
{
int nian;
int yue;
int ri;
};


int run_nian(NYR n)          //此函数计算是否为闰年
{
if((n.nian%4==0&&n.nian%100!=0)||(n.nian%400==0))
return 1;
else
return 0;
}


int check(NYR n)             //此函数判断输入的数据是否正确
{
if(n.nian<1)
{
cout<<"请输入正确的年份!"<<endl;
return -1;
}
if(n.yue<1||n.yue>12)
{
cout<<"请输入正确的月份!"<<endl;
return -2;
}
switch(n.yue)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(n.ri>31||n.ri<1)
{
cout<<"请输入正确的日期!"<<endl;
return -3;
}
break;                     //break不可少
case 4:
case 6:
case 9:
case 11:
if(n.ri>30||n.ri<1)
{
cout<<"请输入正确的日期!"<<endl;
return -3;
}
break;
case 2:
if(run_nian(n)==1&&(n.nian<1||n.nian>29))
{
cout<<"请输入正确的日期!"<<endl;
return -3;
}
break;
if(run_nian(n)==0&&(n.nian<1||n.nian>28))
{
cout<<"请输入正确的日期!"<<endl;
return -3;
}
break;
}
return 0;
}


int jisuan(NYR n)
{
int result=0;
switch(n.yue)
{
case 12:result+=30;
case 11:result+=31;
case 10:result+=30;
case 9:result+=31;
case 8:result+=31;
case 7:result+=30;
case 6:result+=31;
case 5:result+=30;
case 4:result+=31;
case 3:
if(run_nian(n)==1)
{
result+=29;
}
if(run_nian(n)==0)
{
result+=28;
}
case 2:result+=31;
}
return result+n.ri;              //在执行case语句时,根据switch表达式的值找到与之匹配的case子句,就从此case子句开始执行下去,不再进行判断
}


int _tmain(int argc, _TCHAR* argv[])
{
NYR nyr;
cin>>nyr.nian;
cin>>nyr.yue;
cin>>nyr.ri;


run_nian(nyr);
check(nyr);
int tian=jisuan(nyr);
cout<<tian<<endl;
return 0;
}

0 0
原创粉丝点击