打卡 c语言趣味编程 打鱼还是晒网
中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的以后的某一天中是打鱼还是晒网。
设计思路:1、定义一个函数,该函数接收两个参数:一个是起始日期,另一个是未来的某一天。
2、计算起始日期和未来的某一天之间相隔的天数。
3、计算从起始日期到未来某一天经过了多少个“三天打鱼两天晒网”的周期。可以使用取余(%)运算符来计算。
4、根据剩余的天数确定这个人在未来某一天是打鱼还是晒网。如果剩余天数小于等于3,那么这个人在未来某一天就是在打鱼;否则这个人在未来某一天就是在晒网。
流程图:
代码实现:
1 #include <iostream> 2 using namespace std; 3 class Date 4 { 5 public: 6 int year; 7 int month; 8 int day; 9 }; 10 bool runnian(Date&d) 11 { 12 if ((d.year % 4 == 0 && d.year % 100 != 0) || d.year % 400 == 0) 13 { 14 return true; 15 } 16 else 17 { 18 return false; 19 } 20 } 21 bool runnian(int x) 22 { 23 if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0) 24 { 25 return true; 26 } 27 else 28 { 29 return false; 30 } 31 } 32 int main() 33 { 34 Date d1; 35 int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; 36 int count = 0; 37 cin >> d1.year; 38 cin >> d1.month; 39 cin >> d1.day; 40 for (int i = 1990; i < d1.year; i++) 41 { 42 if (runnian(i)) 43 { 44 count = count + 366; 45 } 46 else 47 { 48 count = count + 365; 49 } 50 } 51 for (int i = 0; i < d1.month; i++) 52 { 53 count = count + a[i]; 54 } 55 count = count + d1.day; 56 if (count % 5 == 1 || count % 5 == 2 || count % 5 == 3) 57 { 58 cout << "今天打鱼" << endl; 59 } 60 else 61 { 62 cout << "今天晒网" << endl; 63 } 64 65 return 0;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律