00:01
看一下程序设计题,程序设计题呢,我们要写代码的来,我们仍然是按照前面思路把代码先拿过来,一边分析一边写代码。翻过来。新建一个文件,文件名呢,Exam。11杠零三。嗯,后缀修改。把代码放这,我们来看一下这道题的说法,看这道题的说法走一个。这道题它是怎么说的?他说请编写一个函数放,它的功能是计算并看这道题有有点难度啊,计算并输出N。啊,就是你你你传了一个N进去,传了一个N进去,它计算并并输出N包括N。以内能够被五或者被九整除,整除的所有自然数的倒数之和,那这个地方就涉及到一点数学的知识了,你首先知道什么是自然数,然后要知道什么是倒数啊,然后呢,他举个例子,比如说从主函数里面,我们输入一个20。
01:10
输一个20过后呢,他应该返回的是0.58858333这样一个数,而且它有个要求,注意看啊,这些要求都要在你的代码里面体现出来。明白,他要求呢,N的值不大于100,就你这个N呢,就不要大于100了,在相对说是在100以内。然后他要求在不要不要改动主函数,然后呢,在放函数面写代码,好,同学们我们一起写。首先呢,我们对它做一个分析。我们对它做一个分析,一边分析呢,对咱们一边来进行一个解答就可以了,难度并不是很大。来分析把我们就直接把分析呢,写在放函数这块好吧,分析。首先第一个我们我们怎么来分析这个解题的思路呢?嗯,在给出的我们可以看到哈,在。
02:06
在在给出的。给出的函数中,就是给出这个函数就不是放吗。是不是他给了一个放函数中,我们可以看到,由于函数返回的是双精度,看到没有,它返回类型,它返回类型是double双精度的,看到没有,所以。所以呢,我们这个地方要明白,所以将这个上就这个和,他最后不是求的是一个和吗。好,所以说我们将这个sum呢,也定义成一个double。对。不,初始值,初始值。初始为零,好,我们先把这个double定下来,因为你最终要返回一个值,所以说我一定会个上。对,我先写个double上等于0.0。这个是将来,就是我们所说的这个这个倒数之和,所有自然数的倒数和都会累积到这个里面去,能理解。
03:08
好,第二个大家看到,因为我们在他说他说是要输出,呃输出并计算N以内所有,那肯定是个肯定是个循环对不对,第二个他统计的统计的是呃,就是一应该是统计的是什么呢。是一到。一到N。以内能够被五整除的所有倒数之和。他是不是统计的这个东西啊。就是一一到N以内能够被五或者九整除的所有自然数的倒数和,所以说这个地方应该有个循环,需要什么呢?需要便利。需要便利。遍历一到N,所以应该有个负循环,那这边我就定一个I,好吧,那现在开始写了负循环。放循环呢,那首先我们I就赋值一个一,因为一到N嘛,是1I等于一,I小于等于N,这个能看懂不?然后I加加。
04:07
能理解哈。因为你现在要找的是呃,一到N以内所有被无或者被九整除的所有自然数的倒数之后,那就开始写了呗,那就判断嘛,下面是不是就可以做一个判断就可以了,If就是在这里面数哪些能够被五或者被九整除呢?I55。对不对,它就如果它等于零,或者或者什么呢,或者我们这个I模九。I磨上一个九也等于零。那说明什么呢?说明就是它要么能够被五整除,要么能够被九整除,好拿到以后是不是这个就是我们自然数了,因为一到N我们就称之为自然数,然后求和就OK了,上加倒数,哎倒数你这个I是不是是这个数,如果倒数的话,是不是就是用一除以I,但是一定要小心,因为我们这个I呀,它是一个整数,所以说你这个地方如果这样写答案就是错的。
05:08
一定要写成1.0,为什么?因为如果你不写成1.0,写成一,那你相处永远全部都是零。因为你两个整数相除,它返回结果仍然是整数,那永远都是零,所以说这么一个最关键的地方,就是要写1.0,而不能是一。明白这意思吗?好,这个是累积。将什么呢?将倒数,倒数和累计。累积到上周,注意注意,这里一定不要写成。写成了一除以I,如果你是一除以I,那我告诉你这个结果永远都是零。啊,那就没有意义了,整完了以后,代码写完了没有,写完了写完过后,但是我们这个代码是有问题的,大家知道在什么地方会出现一个问题呢。大家有没有发现人家这还有个要求?
06:02
是不是有这个要求,你是不是也要也要体现出来呀。你这边是不是要要求N的值不大于零,是不是应该有一个判断,有一个if判断在这里,那在这个for循环里边,我们必须做一个判断,就是如果N大于零。并且N小于等于100的时候,我们才去做这个处理。是不是因为你要知道有要求吗?如果如果没有的话,你可以给他提提示一句话对吧,你说诶你的这个有有有错误对不对,应该提示一下你的输入有错,可以这样写一个print f。啊,您的输入有误啊,不在什么呢?啊,你不在。不在100以内,不在100内,他不是说的很清楚吗。就是说,就说你的这个N大,不要求这样写吧,要求N的值不大于100。
07:02
这样子就可以了。那这个时候写完了功能,我们最终不管怎么样,给他返回一个值吧,对不对,如果他如果他这个结果不对,那就返回00.0嘛,对不对,那就return我们的上干嘛写完。代码写完到此为止,这一个放函数就完成它的功能了,我们来试一下,看看这个代码到底能不能用get串一下。思路很简单对不对?其实说白了就是定了一个上来累积它的倒数和里面呢有一个for循环。对,然后负循环过后,这边关键点就是在统计倒数和的时候,要写1.0除以I,而不能是而不能是一除以I,那就完蛋了。同学们,代码写完我们来测一下。剩下的时候呢,我们输入按照它的提议,他的提议是不是说给他一个20返回的是0.58833335啊0.58333,我们看一下,如果这这个结果跟它我们这程序运行的结果跟实际结果不一样,就要去调错的来运行。
08:03
来一个。这边代码有问题。代码哪里错了呢?好,我们看看是不是这边哦,这边没有把主原先这个注销掉,没有注销掉的话呢,那就有两个主函数了,所以它会报错再来。再来这次应该没没毛病的朋友们,我们输入一个20。看结果,走起来。朋友们看,此时此刻这个结果呢,他是,他说是这么一个值,我们输出的也是这么一个值,正确。那有时候我们的代码应该是没问题的,难道如果有有有问题,那肯定就不对了嘛,那你如果说的不是在100以内呢,我们会提示一句话,并返回一个零,你看比如说输200对吧。你的输入有误,要求N的值不大于零,返回一个零。但别人一看到你的提示信息,也知道这个结果肯定不正确了,好吧?各位,那关于这道程序设计题的讲解呢?和分析和讲解就到这里。我们把它。
09:06
放到这里了。分析和讲解解答。各位同学,我们把第11套题也板书到我们这一个笔记中去,便于同学们今后的复习。这是第11套上机题。放下。搁在这哈。嗯,好,我们首先呢,把它的图片拿过来。别人一看这个图片就知道讲的是第11道题。同样,我们把生源第11套题的试卷也给大家板述过来。对试卷。然后呢,我们这来一个小箭筒。给他放到。表格之中。那我就从这拷贝一下哈,因为这边他有很多的小表格,所以说需要从头到尾复制一下。OK。来,放进去,然后把它的样式带上。
10:05
好的同学们,那关于我们第11套题的上机题的操作题啊,就给大家讲解到这儿,当大家呢,把这个题好消化一下,其实难度这道题难度并不是很大,第一题第二题是送分的,第三题呢,一个细节就是这方要写成1.0,否则的话答答案就错了。同学们,那这一讲,我们就到这里。
我来说两句