三天打鱼两天晒⽹(C语⾔实现)
中国有句俗语叫“三天打鱼两天晒⽹”。某⼈从2010年1⽉1⽇起开始“三天打鱼两天晒⽹”,问这个⼈在以后的某⼀天中是“打鱼”还是“晒⽹”。⽤C或C++语⾔/java/python实现程序解决问题。
基本要求:1.程序风格良好(使⽤⾃定义注释模板),提供友好的输⼊输出。
提⾼要求:1.输⼊数据的正确性验证。
2.使⽤⽂件进⾏数据测试。如将⽇期 20100101 20111214 等数据保存在in.txt⽂件中,程序读⼊in.dat⽂件进⾏判定,并将结果输出⾄⽂件。
1、问题分析
本题可以分为三个步骤进⾏解题:
1)计算指定⽇期到2010年1⽉1⽇相差的天数;
2)由于“打鱼”和“晒⽹”的周期为5天,所以将计算出的天数⽤5去除;
3)根据余数判断他是在“打鱼”还是在“晒⽹”;若余数为1,2,3,则他是在“打鱼”,否则 是在“晒⽹”。
在这三步中,最关键的是第⼀步。计算相差的天数要判断很多东西,每个⽉的天数的不同,是否有闰年都要考虑进去。
2、程序框图
编译单个⽂件...
--------
- ⽂件名: C:\Users\mi\Desktop\程序设计⽅法\try\三天两天.cpp
- 编译器名: TDM-GCC 4.9.2 64-bit Release
处理 C++ 源⽂件...
--------
- C++ 编译器: C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\g++.exe
- 命令: g++.exe "C:\Users\mi\Desktop\程序设计⽅法\try\三天两天.cpp" -o "C:\Users\mi\Desktop\程序设计⽅法\try\三天两
天.exe" -std=c++11 -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include" -I"C:\Program Files (x86)\Dev-
Cpp\MinGW64\x86_64-w64-mingw32\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x
86_64-w64-
mingw32\4.9.2\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-
mingw32\lib" -static-libgcc
编译结果...
--------
- 错误: 0
- 警告: 0
- 输出⽂件名: C:\Users\mi\Desktop\程序设计⽅法\try\三天两天.exe
- 输出⼤⼩: 129.69921875 KiB
- 编译时间: 0.45s
4、程序测试
1)闰年测试
2)⽇期正确性测试
5、程序代码
/********************************************************************
* Copyright (C), 2019, Alon Yan,1366480684@qq
* File name: 三天打鱼两天晒⽹.c
* Author: Alon Yan Version:2019030101 Date: 20190301
* Description: 本程序⽤于解决某⼈从2010年1⽉1⽇起开始"三天打鱼两天晒⽹",这个⼈在以后的某⼀天中是"打鱼"还是"晒⽹" 的问题。输⼊2010年1⽉1⽇后的某⼀个⽇期 ,程序输出在这⼀天此⼈是“打鱼”还是“晒⽹”。
* Function List:
1. leapyear(): 判断闰年函数。若该年是闰年则返回"1",若不是闰年则返回"0"。
2. validate(): 验证⽇期正确性函数。 判断输⼊的⽇期是否是正常的并在2010年1⽉1⽇之后。
3. totaldays(): 计算天数函数。计算出指定⽇期到2010年1⽉1⽇的总天数。
* History:
1. Date: 2019/3/1
Author: Alon Yan
Modification: 补充程序的若⼲注释。
********************************************************************/
#include <stdio.h>
struct date{ //创建⽇期结构体
int year;
int month;
int day;
};
int leapyear(int year); //声明判断闰年函数
int validate(struct date currentDay); //声明⽇期验证函数
int totaldays(struct date currentDate); //声明计算天数函数
int main(void)
{
struct date currentDay;
int count;
python怎么读取dat文件validate(currentDay); //验证⽇期正确性
count=totaldays(currentDay); //求出指定⽇期
if(count%5>0&&count%5<4) //判断指定⽇期使打鱼还是晒⽹
printf("He was fishing at that day.\n");
else
printf("He was sleeping at that day.\n");
}
/********************************************************************
Function: leapyear()判断闰年函数。
Description: 判断输⼊参数是否是闰年。
Calls: ⽆
CalledBy: validate()、 totaldays()
Input: year:需要函数判断的年份。
Return: 若该年是闰年则返回"1",若不是闰年则返回"0"。
********************************************************************/
/
*判断闰年函数*/
int leapyear(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
/***************************************************************************
Function: validate() 验证⽇期函数。
Description: 判断输⼊的⽇期是否是正常的并在2010年
1⽉1⽇之后。
Calls: leapyear()
CalledBy: main()
Input: currentDay:通过scanf获取指定⽇期,判断是否是合法的⽇期。********************************************************************/
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论