打鱼晒网C实例
来源:互联网 发布:sql server2005标准版 编辑:程序博客网 时间:2024/03/29 19:02
问题描述:三天打鱼两天晒网寓言故事的实例化
分析:实质上是判断某年某月某日在当年的第多少天问题,问题的关键闰年的判断,以及输入年与日的合法性。
代码:
#include <stdio.h>#define OK 0#define ERROR 1#define NONLEAP 0#define LEAP 1int NonLeap[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //平年天数int Leap[12] = {31,29,31,30,31,30,31,31,30,31,30,31}; //闰年天数/* 判断闰年还是平年,闰年返回1,平年返回0 */int IsLeap(int y){ if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) //闰年判断条件 return LEAP; return NONLEAP;}/* 判断输入的合法性,合法返回0,不合法返回1 */int Judge(int y, int m, int d){ if (m > 12 || m < 0) return ERROR; else if (IsLeap(y) == LEAP && m == 2 && d > 29) //判断闰年的2月输入是否大于29天 return ERROR; else if (IsLeap(y) == NONLEAP && m == 2 && d > 28) //判断平年的2月输入是否大于28天 return ERROR; return OK;}/* 计算输入年月日到当前的总天数,total为地址引用,返回总天数 */void Totaldays (int y, int m, int d, int *total){ int i; if (IsLeap(y) == LEAP) { for (i = 0; i < m - 1; i ++) *total += Leap[i]; } else { for (i = 0; i < m - 1; i ++) *total += NonLeap[i]; } *total += d;}int main (){ int days = 0, year, mon, dd; printf("请输入年月日: \n"); scanf("%d%d%d",&year,&mon,&dd); while (Judge(year, mon, dd) == ERROR) { printf("请检查输入的年月日是否正确并重新输入: \n"); scanf("%d%d%d",&year,&mon,&dd); } Totaldays(year, mon, dd, &days); //printf("%d",days); if (days % 3 == 1) printf("%d-%d-%d : 打鱼\n",year, mon, dd); else printf("%d-%d-%d : 晒网\n",year, mon, dd); return 0;}
运行结果:
输入不合法
输入合法:
0 0
- 打鱼晒网C实例
- c解决打鱼晒网问题
- 打鱼还是晒网C语言
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼晒网问题
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼晒网
- 打鱼还是晒网
- 打鱼晒网
- c语言(两天打鱼,三天晒网)
- 打鱼还是晒网问题
- 打鱼还是晒网问题
- 2811:打鱼还是晒网
- 打鱼还是晒网C++
- django系列5:模型(model)
- 抽象工厂+反射(一)
- 深入浅出angularJS中的Service
- JDK 自带工具备忘
- 几个前端学习练习!
- 打鱼晒网C实例
- 同步文件rsync
- Spring Boot 基础知识学习(二)——配置文件多环境配置
- Fork/Join(2):归并排序
- 数据结构(线性结构习题)Problem B: 击鼓传花
- Guess Number Higher or Lower
- 怎样让数据说话呢
- 如何测试网络连通性
- Jmeter教程 简单的压力测试