include <stdio.h>

typedef struct date {//定义一个日期结构体date,三个成员变量year\month\day,使得年月日作为一个整体,相互联系。

//结构体:【适用形式:typedef struct m{ int a;int b;int c }M;M c;】【typrdef:类型定义、说明】-将struct m命名为M,再定义结构体变量-M c;

int year;

int month;//结构体一般形式:【struct 类型名{成员列表}变量;小心分号】在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。

int day;

}DATE;

int countDay(DATE);//声明函数countDay\runYear接受DATE\int类型参数,countDay(year、month、day)表示指定(年、月、日),runYear函数为判断闰年

int runYear(int);

void main()

{

DATE today;//指定日期-定义结构体变量

int totalDay;//指定日期距离1990年1月1日的天数

int result;//totalDay对5取余的结果

printf("please input 指定日期 包括年, 月, 日 如:1999 1 31\n");//输入指定的日期,包括年月日

scanf_s("%d%d%d",&today.year,&today.month,&today.day);//scanf输入可能不安全,可替换使用scanf_s

//求出指定日期距离1990年1月1日的天数

totalDay = countDay(today);

//天数%5,判断输出打鱼还是晒网

result = totalDay % 5;//每5天一个周期,%为取余运算

if (result > 0 && result < 4)//判断每一个周期的5天内,取余结果为1—3:前三天是打鱼,取余结果为4、5:后两天是晒网。即三天打鱼两天晒网,&&(逻辑与)有一个为0则结果为0。

printf("今天打鱼");

else

printf("今天晒网");

}

int runYear(int year)//闰年判断函数runYear函数的函数体

{//闰年:如果(该年能被4整除并且不能被100整除)或者(该年能被400整除则是闰年)

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))//判断指定日期是否闰年,是返回1,否返回0,||(逻辑或)有一个为1则判断结果为1。

return 1;

else

return 0;

}

//求指定日期距离1990年1月1日的天数-算法核心部分【到指定日期距离1990年1月1日的天数totalDay=1990年至指定日期前一年共有多少天+指定年中到指定日期的天数】

int countDay(DATE currentDay)//countDay函数计算指定日期距离1990年1月1日的天数,的函数体,函数定义:函数名(countDay)类型(DATE)参数(currentDay表示指定日期)

{

int perMonth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };//每月天数数组,数组初始化,数组是一种数据结构,用于存储一组相同类型的数据。它可以按照索引来访问和操作其中的元素,使得对数据的处理更加方便和高效。

int totalDay = 0, year, i;

for (year = 1990; year < currentDay.year; year++)//将年份作为循环变量,求指定年之前的每年的天数累加和

{

if (runYear(year))//如果指定年份前的某一年为闰年则执行totalDay = totalDay + 366;//否则执行totalDay = totalDay + 365;

totalDay = totalDay + 366;

else

totalDay = totalDay + 365;

}

if (runYear(currentDay.year))//判断指定年是否为闰年,若是则该年2月加一天

perMonth[2] += 1;//是闰年则2月加一天为29天

for (i = 0; i < currentDay.month; i++)//将本年内的天数累加到totalDay

totalDay += perMonth[i];//计算指定日期到指定日期年初的天数,a+=b;含义同a=a+b;赋值运算将右运算结果赋给左变量

totalDay += currentDay.day;//将本月的天数累加到totalDay

return totalDay;//返回totalDay的值

}

C语言趣味编程之三天打鱼两天晒网的更多相关文章

  1. c语言趣味编程(3)打鱼还是筛网

    一.问题描述 中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的以后的某一天中是打鱼还是晒网. 二.设计思 ...

  2. c语言趣味编程(4)抓交通肇事犯

    一.问题描述 一辆卡车违反交通规则,撞人后逃跑.现场有三人目击该事件,但都没有记住车号,只记下车号的一些特征. 甲说:牌照的前两位数字是相同的: 乙说:牌照的后两位数字是相同的,但与前两位不同: 丙是 ...

  3. c语言趣味编程(2)借书方案知多少

    一.问题描述 小明有5本新书,要借给A,B,C这三位小朋友,若每次每人只能借一本,则可以有多少种不同的借法? 二.设计思路 (1)定义三个变量a,b,c来代表三位小朋友借的书的编号 (2)利用for循 ...

  4. c语言趣味编程(1)百钱百鸡

    一.问题描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡.母鸡.小鸡各买多少只 二.设计思路 (1)定义三个变量下x,y,z代表公鸡,母鸡,小鸡的数 ...

  5. 【算法】C语言趣味程序设计编程百例精解

    C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1)  https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...

  6. 【转载】ANSYS的APDL与C语言混合编程(实例)

    原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...

  7. [收藏转贴]struct探索·extern "C"含义探索 ·C++与C的混合编程·C 语言高效编程的几招

    一.C/C++语言 struct深层探索 1.自然对界 struct是一种复合数据类型,其构成元素既可以是基本数据类型(如 int.long.float等)的变量,也可以是一些复合数据类型(如 arr ...

  8. 分支-03. 三天打鱼两天晒网-B3

    /*B3-分支-03. 三天打鱼两天晒网 *Main.c *测试通过 */ #include <stdio.h> #include <stdlib.h> int main() ...

  9. Mysql C语言API编程入门讲解

    原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程.   ...

  10. 为什么还坚持.NET? 找一门适合自己的语言去做编程

    为什么还坚持.NET? 找一门适合自己的语言去做编程 接触了.NET快十二年了,现在专注于分布式服务的开发. 中间经历过各种编程语言的诱惑,ios等. 前几年才对自己有比较明确的定位 技术上:找到适合 ...

随机推荐

  1. OpenIM集群(非k8s)部署文档

    自行部署etcd/zookeeper/mysql/kafka/mongo/redis集群,可以根据此性能评估服务器需求. 以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)( ...

  2. 人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型

    "AI Earth"人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型.SA-ConvLSTM模型 1.气象海洋预测-模型建立之TCNN+RNN ...

  3. conda创建虚拟环境后文件夹中只有conda-meta文件夹,无法将环境添加到IDE中

    1.问题描述:anaconda的envs的其中一个环境目录下,没有python.exe文件,只有conda-meta和scripts 平时创建虚拟环境都是: conda create -n test ...

  4. Python 元组详细使用

    1. 元组 元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可修改其元素. 元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号"()"中,而不是方括号中. 1 ...

  5. Linux如何禁用透明大页

    环境: RHEL 6.5 + Oracle 11.2.0.4 RAC 1.确认透明大页是否开启 grep HugePage /proc/meminfo cat /sys/kernel/mm/redha ...

  6. NC16697 [NOIP2001]Car的旅行路线

    题目链接 题目 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中 ...

  7. NC235745 拆路

    题目链接 题目 题目描述 有 \(n\) 个城镇,城镇之间有 \(m\) 条道路相连,道路可以看成无向边.每一个城镇都有自己的一个繁荣度 \(v_i\) ,一个城镇 \(u\) 受到的影响 \(p\) ...

  8. JavaScript 的灵异事件之一

    场景 在做项目的时候需要用到Ajax 做多次的异步处理数据, 三次Ajax:A --ok--> B --ok--> C 在入参数据相同的情况下,做了两论这个操作,但发现没有发送 A 的 A ...

  9. 【Unity3D】Unity3D技术栈

    1 前言 ​ 本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到 ...

  10. keras建模的3种方式——序列模型、函数模型、子类模型

    1 前言 keras是Google公司于2016年发布的以tensorflow为后端的用于深度学习网络训练的高阶API,因接口设计非常人性化,深受程序员的喜爱. keras建模有3种实现方式--序列模 ...