编写程序,要求输入年月日,输出该日是本年中的第几天
2015-10-02 21:09
756 查看
定义一个结构体变量(包括年、月、日),编写程序,要求输入年、月、日,程序能计算并输出该日在本年中是第几天。注意闰年问题。
#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;
}
#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;
}
相关文章推荐
- 操作系统学习 28/9/2015
- ng 机器学习第二讲
- http://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html
- LeetCode题解:Best Time to Buy and Sell Stock II
- Swift学习(二)
- 小坑+1 runAction 顺序
- C#学习之路 , 学习笔记 2.4 转义字符 和 @控制符
- Codeforces Round #274 (Div. 2)
- repo 获取Android源码
- LeetCode题解:Best Time to Buy and Sell Stock
- TCP/IP详解卷1 读书笔记:第七章 Ping程序
- Java学习笔记----封装和private关键字
- Android五个布局
- http://jingyan.baidu.com/article/a378c960630e61b329283045.html
- [codevs2152]滑雪
- 新文章
- LeetCode题解:Triangle
- [LeetCode]Longest Consecutive Sequence
- RPC漏洞
- CentOS 7更改网卡名称