打鱼晒网C语言程序,利用C语言分清晒网亦或打鱼

其实C语言是一种应用非常广泛的编程语言,更多的时候有很多的开发人员都会将其运用到我们的日常生活当中。毕竟如果我们使用C语言的话,有很多复杂的问题都会变得简单来解决。今天小编给大家带来的教程是:利用C语言分清晒网亦或打鱼。

提出问题

三天出海打渔,回来用两天时间修补晾晒渔网,这是打渔的最佳方式。每天打渔每天晒网的方式是不可能的,小编今天就带大家学习一下究竟是打鱼亦或是晒网吧。问题现在就已经很清楚了,那么就让我们一起来分析一下问题吧。

5ea60a243f1faa1cf51ad0d21d2fdb29.png

分析问题和设计算法

根据上面所提出的问题,我们大可以将这个过程分为三步,具体的哪三步呢?具体如下:

①首先我们要做的就是先计算一下从1990年1月1日开始至到我们所指定日期,在这段时间一共有多少天;

②因为“晒网”以及“打鱼”每一个过程的周期都是为五日,因此我们就把刚刚计算出来的天数利用数字5来去除;

③进行相对应的除法运算以后,我们就根据余数来进行判断他就究竟是在“晒网”亦或是“打鱼”了。假如说我们运算得到的余数是数字1,2,3的话,那么他就是在做“打鱼”的操作;如果不是1,2,3,的话,那就证明了那个人正在“晒网”。

大家认为在这三个步骤中,最关键是哪一个步骤呢?没错,第一步的操作是最关键的。为什么小编会这样说呢?那是因为我们要求出从1990年1月1日到指定日期究竟有多少天,就意味着我们需要判断一下所经历年份中是否存在者闰年。如果是闰年的话,那就是说在这一年中二月是有29天,相反平年的话二月就是有28天。那么我们究竟怎样才可以判断出是否是闰年呢?具体的方法,我们可以才用伪语句来进行描述。语句如下:

假如((年可以被4整除并且不可以被100整除)又或者是可以被400整除)

那么这一年就是闰年;

否则这一年不是闰年。

温馨提示:在C语言中,如果我们需要判断是否可以整除的话,大可以使用求余运算(就是我们所说的求模)。

程序注释和说明

好吧最后的最后,小编给大家带来相关的程序代码吧,还附上相关的注释哟!希望这对大家有所帮助。具体的代码,如下图:

2a649894dfd8d9f82c334f8526edf4f5.png

930f4f66d481823087d5ea3f7b44c641.png

当然啦,在这里少不了我们的运行结果。我们只要看着最终得出来的结果,就可以判断出他究竟是打鱼亦或是晒网了。方法是不是非常的简单易学?

9efb33b837741b89ae858d4d2d823416.png

小编结语:

通过这篇编程语言教程,不知道大家是否已经可以利用C语言分清晒网亦或打鱼?如果还是不太懂,可以看多几遍教程哟,毕竟实现的方法还是较为简单的。课课家教育每天更新不同的教程,一起来学习吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
打鱼晒网问题是一个经典的计算机科学问题,通常用来介绍算法设计与分析的基本思想。简单来说,问题描述如下: 有一条河流,长度为n,河中有m条鱼。每条鱼在河流中的位置用一个整数表示,鱼的大小也用一个整数表示。每次可以在河流中选择一段区间,捕获其中所有的鱼,但只能捕获其中最大的那条。同时,在捕获鱼之前,需要先将区间中所有鱼晒干,晒干每条鱼需要1个时间单位。求最短需要多少时间才能将所有的鱼都捕获。 这个问题可以用贪心算法来解决。首先将所有鱼按照位置从左到右排序,然后依次捕获每条鱼。具体而言,从第一条鱼开始,依次向右扫描每一条鱼,对于每条鱼,计算它与前一条鱼的距离,然后累加上晒干和捕获这条鱼所需要的时间。如果当前的这条鱼比前一条鱼大,那么就需要等待,直到晒干它的时间结束。如果当前的这条鱼比前一条鱼小,那么就可以直接晒干和捕获这条鱼。最终,所有鱼都被捕获且时间最短。 下面是一个简单的C语言程序实现: ```c #include <stdio.h> #include <stdlib.h> #define MAXN 100000 struct Fish { int pos; int size; }; int cmp(const void *a, const void *b) { return (*(struct Fish *)b).size - (*(struct Fish *)a).size; } int main() { int n, m, i, j, k, t, time = 0; struct Fish fish[MAXN]; scanf("%d %d", &n, &m); for (i = 0; i < m; i++) { scanf("%d %d", &fish[i].pos, &fish[i].size); } qsort(fish, m, sizeof(struct Fish), cmp); for (i = 0; i < m; i++) { t = fish[i].pos - (i > 0 ? fish[i - 1].pos : 0); if (t > time) { time = t; } time += fish[i].size; } printf("%d\n", time); return 0; } ``` 这个程序读入河流长度n和鱼的数量m,然后依次读入每条鱼的位置和大小。将所有鱼按照大小从大到小排序,然后依次扫描每一条鱼,计算晒干和捕获的时间,并更新时间最短值。最终输出时间最短值即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值