03【C语言 & 趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

简介: 03【C语言 & 趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

一、指路哦



02【C语言&趣味算法】借书方案问题:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?


01【C语言&趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。


三、打鱼还是晒网呦?



3.1问题描述

b65a4eebcd044f07ad6497a5e6211acf.jpg


3.2问题分析

78b45bad04dc48c49b4b22ad271b7e48.jpg


3.3算法设计

25ac0a02dbe7499c8c50b0e3e12f5fd5.jpg


3.4确定程序框架

程序流程图如下:


64b44c1ac1474c65a80313340dbbac37.jpg

根据流程,构建程序框架如下:


c8be1949791e4f14a225fab64abfa896.jpg


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

6f5e23072626444aad78e407bb805d4f.jpg91dd57cf241b43e5af87034284fd68a0.jpg


3.6完整code 及结果


本例的趣味之处,在于使用结构体来巧妙存储表达年、月、日三个变量。

同时,通过自定义的判断闰年О函数以及求距离1990年1月1日的天数的函数,也是本题比较巧妙的—点。


总之,本题还是十分值得“品味”滴,下面来看源代码吧!


// 趣味03:打鱼 还是 晒网? 
#include<stdio.h>
/*定义日期结构体*/
typedef struct date {
int year;
int month;
int day;
}DATE;
int countDay(DATE);                 /*函数声明*/
int runYear(int);                   /*函数声明*/
int main()
{
  DATE  today;                  /*指定日期*/
  int totalDay;                 /*指定日期距离1990年1月1日的天数*/
  int result;/*totalDay对5取余的结果*/
  /*输入指定日期,包括年,月,日*/
  printf("please input 指定日期 包括年,月,日 如:1999 1 31\n");
  scanf("%d%d%d",&today.year,&today.month,&today.day);
  /*求出指定日期距离1990年1月1日的天数*/
  totalDay=countDay(today);
  /*天数%5,判断输出打鱼还是晒网*/
  result=totalDay%5;
  if(result>0&&result<4)
    printf("今天打鱼");
  else
    printf("今天晒网");
}
/*判断是否为闰年,是返回1,否返回0*/
int runYear(int year)
{
  if((year%4==0&&year%100!=0)||(year%400==0))     /*是闰年*/
    return 1;
  else
    return 0;
} 
/*计算指定日期距离1990年1月1日的天数*/
int countDay(DATE currentDay)
{
  int perMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30};    /*每月天数数组*/
  int totalDay=0,year,i;
  /*求出指定日期之前的每一年的天数累加和*/
  for(year=1990;year<currentDay.year;year++)
  {
    if(runYear(year))               /*判断是否为闰年*/
      totalDay=totalDay+366;
    else
      totalDay=totalDay+365;
  }
  /*如果为闰年,则二月份为29天*/
  if(runYear(currentDay.year))
    perMonth[2]+=1;
  /*将本年内的天数累加到totalDay中*/
  for(i=0;i<currentDay.month;i++)
    totalDay+=perMonth[i];
  /*将本月内的天数累加到totalDay中*/
  totalDay+=currentDay.day;
  /*返回totalDay*/
  return totalDay;
}


结果:测试了几个结果,拼到—起啦,看着比较方便咯~


24ef4bb47c3b4a2c88d7bc4657ee705b.jpg


相关文章
|
9月前
|
算法 机器人 定位技术
【VRPTW】基于matlab秃鹰算法BES求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)(Matlab代码实现)
【VRPTW】基于matlab秃鹰算法BES求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)(Matlab代码实现)
271 0
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
846 23
|
8月前
|
机器学习/深度学习 传感器 算法
基于matlab瞬态三角哈里斯鹰算法TTHHO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)(Matlab代码实现)
基于matlab瞬态三角哈里斯鹰算法TTHHO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)(Matlab代码实现)
286 1
|
8月前
|
存储 C语言
`scanf`是C语言中用于按格式读取标准输入的函数
`scanf`是C语言中用于按格式读取标准输入的函数,通过格式字符串解析输入并存入指定变量。需注意输入格式严格匹配,并建议检查返回值以确保读取成功,提升程序健壮性。
1438 0
|
C语言
C语言中条件操作符的应用
最后,条件操作符是个超级英雄,但不是每个代码问题都需要一个超级英雄来解决。一定要在适当的时候适度的使用它,那么它将成为你的编程工具箱中的一件强力工具。
505 75
|
10月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
436 15
|
9月前
|
机器学习/深度学习 算法 数据挖掘
【配送路径规划】基于螳螂虾算法MShOA求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)研究(Matlab代码实现)
【配送路径规划】基于螳螂虾算法MShOA求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)研究(Matlab代码实现)
325 0
|
9月前
|
算法 Python
【配送路径规划】基于遗传算法求解带时间窗的电动汽车配送路径规划(目标函数:最小成本;约束条件:续驶里程、额定载重量、数量、起始点)研究(Matlab代码实现)
【配送路径规划】基于遗传算法求解带时间窗的电动汽车配送路径规划(目标函数:最小成本;约束条件:续驶里程、额定载重量、数量、起始点)研究(Matlab代码实现)
315 0
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
601 1
一文彻底搞清楚C语言的函数
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
785 15
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】