问题描述:
定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。
代码:
/*
*copyright (c) 2014,烟台大学计算机学院
*all rights reserved.
*文 件 名 :当年第几天.cpp
*作 者 :张 鹏
*完成日期 :2014年11月07号
*版 本 号 :v1.0
*
*问题描述 定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。
*输入描述 :三个整数,分别代表年份,月份天数。
*程序输出 :输出当年有几天。
*/
#include <iostream> //预处理指令。.
using namespace std; //使用C++的命名空间 std。
int days(int,int,int ); //声明自定义函数,用于求n的阶乘。
int main () //函数首部。
{
int year,month,day; //声明3个变量为整型,分别代表年月日。
cout<<"输入年 月 日"<<endl; //输出汉字使得界面友好。
cin>>year>>month>>day; //从键盘输入年月日。
cout<<"这是该年的第"<<days(year, month, day)<<"天"<<endl;//调用days函数并输出结果。
return 0; //执行返回函数,结束程序。
}
/*
*我的想法是假定每个月都是三十天,然后算出在这个基础下的天数。
*这当然有差错,于是我定义个变量a,代表的是每个不同月分累积的误差。
*在和之前算出的值一加就行。
*闰年我也考虑了我有加一个变量b。
*以上。
*/
int days(int y,int m,int d) //自定义函数days,其中有三个整型变量。
{
int a=0,b=0; //声明2个变量a,b为整型并都赋予初值为0。
switch (m) //switch语句执行,变量为月份。
{
case 1:
a=0;
break;
case 2:
a=1;
break;
case 3:
a=-1;
break;
case 4:
a=0;
break;
case 5:
a=0;
break;
case 6:
a=1;
break;
case 7:
a=1;
break;
case 8:
a=2;
break;
case 9:
a=3;
break;
case 10:
a=3;
break;
case 11:
a=4;
break;
case 12:
a=4;
break;
}
if (m>2&&((y%4==0&&y%100!=0)||(y%400==0))) //当出现比2月大的月份考虑闰年问题。
b=1;
else b=0;
return (d=(30*(m-1)+d+a+b)); //返回求的天数。
}
运行结果:
知识点与学习心得:
这个项目编程的过程是我在手机上完成的,感觉不错。