2014秋C++第17周 项目4参考 日期结构体
2014-12-20 21:24
337 查看
课程主页在/article/1353164.html,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。
【项目4 - 日期结构体】
(1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。
参考解答二:
参考解答三: 函数版1——用结构体的分量当形参
参考解答四:函数版2——用结构体整体作为参数
(2)输入两个人的生日,求出他们相差多少天。
参考解答:
【项目4 - 日期结构体】
(1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。
#include <iostream> using namespace std; struct Date { int year; int month; int day; }; int main() { Date date; cout<<"input year,month,day:"; cin>>date.year>>date.month>>date.day; int days; //计算days cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days<<"天."<<endl; return 0; }参考解答一:
#include <iostream> using namespace std; struct Date { int year; int month; int day; }; int main() { Date date; cout<<"input year,month,day:"; cin>>date.year>>date.month>>date.day; int days; switch(date.month) { case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+151; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334; break; } if ((date.year %4== 0 && date.year % 100 != 0 ||date.year % 400 == 0) && date.month >=3) days+=1; cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days <<"天."<<endl; return 0; }
参考解答二:
#include <iostream> using namespace std; struct Date { int year; int month; int day; }; int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int main() { Date date; cout<<"input year,month,day:"; cin>>date.year>>date.month>>date.day; int days=0,i; for(i=1;i<date.month;++i) days+=d[i]; //当月之前的天数 days+=date.day; //加上本月天数 if ((date.year %4== 0 && date.year % 100 != 0 ||date.year % 400 == 0) && date.month >=3) days+=1; //闰年的2月要加1天 cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days <<"天."<<endl; return 0; }
参考解答三: 函数版1——用结构体的分量当形参
#include <iostream> using namespace std; struct Date { int year; int month; int day; }; int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int days(int,int,int); int main() { Date date; cout<<"input year,month,day:"; cin>>date.year>>date.month>>date.day; cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"; cout<<days(date.year,date.month,date.day)<<"天."<<endl; return 0; } int days(int yy,int mm,int dd) { int n=0,i; for(i=1;i<mm;++i) n+=d[i]; //当月之前的天数 n+=dd; //加上本月天数 if ((yy %4== 0 && yy % 100 != 0 ||yy % 400 == 0) && mm >=3) n+=1; //闰年的2月要加1天 return n; }
参考解答四:函数版2——用结构体整体作为参数
#include <iostream> using namespace std; struct Date { int year; int month; int day; }; int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int days(Date); int main() { Date date; cout<<"input year,month,day:"; cin>>date.year>>date.month>>date.day; cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"; cout<<days(date)<<"天."<<endl; return 0; } int days(Date ymd) { int n=0,i; for(i=1;i<ymd.month;++i) n+=d[i]; //当月之前的天数 n+=ymd.day; //加上本月天数 if ((ymd.year %4== 0 && ymd.year % 100 != 0 ||ymd.year % 400 == 0) && ymd.month >=3) n+=1; //闰年的2月要加1天 return n; }
(2)输入两个人的生日,求出他们相差多少天。
参考解答:
#include <iostream> using namespace std; struct Date { int year; int month; int day; } ; int daysOfMonth[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int day(Date); //计算出日期d和1900年1月1日差多少天 int main() { Date date; int d1=0,d2=0,t;//d1和d2分别代表两个人的生日和1900年1月1日相差多少天 cout<<"第一个人的出生日期:"; cin>>date.year>>date.month>>date.day; d1=day(date); cout<<"第二个人的出生日期:"; cin>>date.year>>date.month>>date.day; d2=day(date); //对两个人的生日,求出了和1900年1月1日相差多少天(d1和d2),下面相减 t=d2-d1; if(t<0) { t=-t;//若出现负数,则将其化为正数 } cout<<"两人生日相差"<<t<<"天."<<endl; } int day(Date d) { int days=0,i; for(i=1900; i<d.year; i++)//算出这年1月1日到1900年1月1日共多少天 { days+=365; if(i%400==0||(i%4==0&&i!=0)) { days++; } } for(i=1; i<d.month; ++i) days+=daysOfMonth[i]; //加上当年当月之前的天数 days+=d.day; //再加上本月天数 if (d.month >=3 && ((d.year %4== 0 && d.year % 100 != 0) ||d.year % 400 == 0)) days+=1; //当年为闰年且进入了3月,还要加1天 return days; //生日到1900年1月1日共多少天 }
=================== 迂者 贺利坚 CSDN博客专栏================= |== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==| |== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==| |== 我写的书——《逆袭大学——传给IT学子的正能量》 ==| ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ===== |
相关文章推荐
- 2014秋C++第17周 项目5参考 玩日期时间
- 2014秋C++第17周 项目7参考 电子词典结构体版
- 2014秋C++第17周 项目6参考 学生成绩统计
- 2014秋C++第17周 项目 结构体登场
- 2014秋C++第17周 项目2参考 引用作形参
- 2014秋C++第17周 项目3参考 胖子伤不起
- 2014秋C++第9周项目6参考-穷举法解决组合问题
- 2014秋C++第11周项目2参考-求最大公约数
- 2014秋C++第8周项目6参考-本月天数
- 2014秋C++第12周项目3参考-用递归方法求解
- 2014秋C++第10周项目3参考-血型统计
- 2014秋C++第11周项目1参考-函数版星号图
- 2014秋C++第5周项目1参考-见识初学者常见错误
- 2014秋C++第5周项目2参考-简单计算问题体验
- 2014秋C++第11周项目5参考-当年第几天
- 2014秋C++第12周项目2参考-OJ平台题目中多种输入形式的处理
- 2014秋C++第10周项目6参考-贪财的富翁
- 2014秋C++第8周项目3参考-多分段函数求值
- 2014秋C++第8周项目2参考-加班费
- 2014秋C++第9周项目2参考-分数的累加