注册 登录
编程论坛 C++教室

求助一道编程题

m5jun 发布于 2011-04-27 12:06, 553 次点击
给定某个年月日,例如,2000年7月25日。计算出这一天是属于该年的第几天。要求写出计算闰年的函数和计算日期的函数。
6 回复
#2
Pirelo2011-04-27 12:46
这个算法到处都能找到的:
void main()
{
    int day,month,year,sum,leap;
    cout<<"please input year:"<<endl;
    cin>>year;
    cout<<"please input month:"<<endl;
    cin>>month;
    cout<<"please input day:"<<endl;
    cin>>day;

    /*先计算某月以前月份的总天数*/
    switch(month)
{
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:cout<<"data error";break;
}
    /*再加上某天的天数*/
    sum=sum+day;
   if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
     leap=1;
   else
     leap=0;
  /*如果是闰年且月份大于2,总天数应该加一天*/
  if(leap==1&&month>2)
  sum++;

cout<<"It is the "<<sum<<"th day "<<endl;
  if(1==leap)
  {cout<<"And it's a leap year"<<endl;}
}
#3
m5jun2011-04-27 14:47
回复 2楼 Pirelo
谢了呀,哥们你编程怎么学这么好,给我这个初学者一点建议行不?
#4
Pirelo2011-04-27 15:28
回复 3楼 m5jun
很简单,这不是编程好不好的问题,就是知道与不知道
如果你把这道题消化了,你就知道了,下次有人问你怎么实现,你同样能对答如流。
看书->练习->再看书->再练习,知识与经验的积累不过如此
#5
linw12252011-04-27 16:28
对于2楼的代码。
switch语句换成用一个13个元素的整型数组来实现相加的话应该会更简洁点。
楼主可以试试。
#6
棉雨2011-05-04 00:46
回复 5楼 linw1225
五楼说的对于2楼的代码。
switch语句换成用一个13个元素的整型数组来实现相加的话应该会更简洁点。
楼主可以试试。
这个能不能再提示一点。
#7
lucky5635912011-05-04 08:41
太简单了,先判断闰年,再累加
1