/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: date.cpp
* 作 者:
* 完成日期: 年 月 日
* 版本号: v1.0
* 输入描述:年月日
* 问题描述:输出对应的那一天是这一年的第几天
* 输出:第几天
*/
#include <iostream>
#include<stdio.h>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int days(int n,int m, int z);
int month2day(int month,int year);
bool isRunYear(int year);
int main()
{
Date date;
cout<<"请输入 年 月 日:";
cin>>date.year>>date.month>>date.day;
int day;
day=days(date.day,date.month,date.year);
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<day<<"天."<<endl;
cout<<"按enter继续"<<endl;
fflush(stdin);
getchar();
main();
return 0;
}
int days(int n,int m, int z){
int x,i,sum=0;
for(i=1;i<m;++i){
x=month2day(i,z);
sum+=x;
}
return sum+n;
}
bool isRunYear(int year){
if((year%4==0&&year%100!=0)||(year%400==0)){
return true;
}else{
return false;
}
}
int month2day(int month,int year){
int day=0;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
case 2:
if(isRunYear(year)){
day=29;
}else{
day=28;
}
break;
}
return day;
}
运行结果: