使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。 程序分析:以3月5日为例,应该先把前两个月的天数加起来,然后再加上5天即本年的第几天(特殊情况:

admin2018-10-23  38

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。
    程序分析:以3月5日为例,应该先把前两个月的天数加起来,然后再加上5天即本年的第几天(特殊情况:闰年输入月份大于3时需考虑多加一天)。
    注意:只能补充函数func(int year,int month,int day),请勿改动其他部分的内容。
1  #include<iostream.h>
2  int func(int year,int month,int day)
3  {
4
5  }
6  void main()
7  {
8    cout<<func(2007,2,1)<<end1;
9    cout<<func(2007,i0,i0)<<end1;
10    cout<<func(2008,8,12)<<end1;
11    return;
12  }

选项

答案1 int sum; 2 int leapyear; 3 switch(month)/*先计算某月以前月份的总天数*/ 4 { 5 case 1: 6 sum=0; 7 break; 8 case 2: 9 sum=31; 10 break; 11 case 3: 12 sum=59; 13 break; 14 case 4: 15 sum=90; 16 break; 17 case 5: 18 sum=120; 19 break; 20 case 6: 21 sum=151; 22 break; 23 case 7: 24 sum=181; 25 break; 26 case 8: 27 sum=212; 28 break; 29 case 9: 30 sum=243; 31 break; 32 case 10: 33 sum=273; 34 break; 35 case 11: 36 sum=304; 37 break; 38 case 12: 39 sum=334; 40 break; 41 default: 42 cout<<’’data error’’<<end1; 43 break; 44 } 45 sum=sum+day; 46 if(year%400==0 ||(year%4==0&& year%100!=0))/*判断是不是闰年*/ 47 leapyear=1; 48 else 49 leapyear=0; 50 if(1eapyear==1&&month>2) 51 sum++; 52 return sum;

解析 函数函数func(int year,int monm,int day返回某一天属于这一年的第几天,可以把该月之前的所有天数加起来再加上本月的第几天得到返回值,一种特殊情况需要注意,闰年时2月会多一天,这个时候可以先判断是否是闰年,如果是再看是不是二月以后,如果是则加在前面结果的基础上在加一天。
    (1)为方便起见,先统计正常年份下,每个月的前面有多少天,可以用switch方式查询,然后再加上本月的日子,很快便得到了这一天是属于这一年的第几天。
    (2)闰年的判断方法为:if(year%400==0||(year%4==0&&year%100!=0)),if语句为真则为闰年,二月之后的日期后需要加一天。
转载请注明原文地址:https://kaotiyun.com/show/dwAp777K
0

最新回复(0)