旧题新作 熟练传输不同类型的参数给函数(傻瓜式教学)

2 篇文章 0 订阅
1 篇文章 0 订阅

1.前言

           旧题是找n之前带7或是7的倍数的数的个数,新作呢,对函数体不同类型的实参不熟练怎么传入,或弄混的小伙伴有福啦。通过这道题,让你一次全弄懂。

2.构造函数

        既然要练习给函数传入不同类型的参数,那么我们应该先把函数构造出来,构造函数第一步,要大致知道用几个函数,每个函数管干啥,当然每个人分的都不一样,这里讲一下我的思路。首先既然那找带7或是7倍数的数的个数,那就要判断n之前的每一个数(可以从7开始)是不是我们要找的数,然后设个计数器,找到一个就加1,最后输入计数器的值即可。有了这个思路,首先你要有一个循环,从7循环到n,然后在循环里面通过一些代码或函数做判断。个位数就不用说了,主要是多位数里面有带7也算,所以我们可以构造一个需要传入数组或指针类型的参数的函数来读入多位数的每一位,然后再构造一个判断是不是目标数并计数的函数。最后由主函数输出计数器的值即可。所以我们确定了我们需要两个函数(不包括主函数)来完成这道题。

3.给类型分配任务

        还是那句话既然要练习给函数传入不同类型的参数,那我们就要有意多用不同类型的变量。比如要读入多位数每一位,我们可以先定义一个数组,然后再定义一个指向它的指针。用指针去读入,当然用指针代替数组去遍历读入还有简化代码的作用。然后做判断的时候可以用数组的每个元素去做判断,这里用数组还是比较好的。然后再来几个普通类型(比如int,double)的变量,辅助完成工作就ok了。

4.编写主函数

        主函数也就是咱们的主思路,不用管具体的功能怎么实现,那些交给函数。顺着思路把主函数给敲下来。前面提到了我们至少需要一共计数器,一个指针,一个数组。总思路也说过了。那么我们就可以有以下代码(为什么函数需要哪些参数待会在标题5讲,你现在只需要知道他们的功能就行了;稍安勿躁。)

        这里为什么要把计数器设为一个指针,是因为我们是把计数器放到了那个Count的函数里去计数,也不可能放出来,因为每经过判断去找到一个符合条件的数计数器就要立即去+1;所以计数和判断要放一块。但我们知道函数体里的普通(即非数组和指针)参数改变时,对外面是没影响的。所以我们要用指针去计数,然后让主函数读出指针的值即可,那有同学会问你可以让Count把计数器的值返回给主函数啊,那当然是一种解决办法,你可以自己设计一下,但我敢打赌还是直接设指针方便。

5.编写功能函数       

        首先我们已经确定我们需要两个函数,一个管读入,一个管判断并计数。

        先说第一个我们怎样读入那个数的每一位数呢?我们知道一个整型的数对10取余可以把个位分离出来,对10取除可以把个位数扔掉,那我们可以以此为循环取了就扔,取了就扔。知道最后是0为止(因为个位数对10取除等于0)。所以我们是不是需要先把那个数传入这个函数,然后再用指针去读入每个位的数值就行。那我们就确定了我们这个函数需要一个指针参数,需要一个整型的参数。我们还需要在函数内部整个计位器来计算那个数一共有多少位,后面判断函数中判断一个数带不带7时遍历要用(这句话如果没听懂可以慢慢往下看)。综上所述,这个读入函数需要返回一个一共有多少位的值,且需要一个指针参数,一个整型参数。如下图

        接下来该做那个用来判断并计数的函数了,既然要判断一个数中带不带7,我们是不是需要遍历判断数组的每一个元素是不是七。一般的我们都用for做遍历,我们知道for的括号里要有三个语句for(赋值;条件;动作)(随便举个例子如for(i=0;i<n;i++),第一个和第三个好确定,既然是遍历数组,那i从零开始没毛病,i++也没毛病,那么应该让i小于多少呢?对了,就是小于那个数的位数,所以我们这个函数需要传入那个数的位数,当然也要一个数组。还需要那个指针型的计数器去计数,既然是指针型的计数了,那就不需要返回计数的值了,当然我们还需要判断那个数是不是七的倍数。所以我们就确定了,我们需要一个无返回(即void)型的函数,它需要一个数组型的参数,一个指针型的参数,两个整型的参数。

6.后言 

        这个还是要多练,多去拆分一些题目,不要怕麻烦就有意这样去写,抽丝剥茧,逐步突破。对新手大有脾益。

        最后,打字不易,如果本篇博客对你有帮助,希望给个赞,蟹蟹啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值