python水仙花数的编程_【学院推荐】以实例教你学习For循环和移位寄存器的编程...

每天1小时,龙哥教你学LabVIEW视觉,参与送福利:

1、低至两折!全套课程众筹价:588元(原价2980元)

2、《LabVIEW视觉算子手册》配套电子书

3、价值58元《LabVIEW机器视觉实用教程基础篇》

LabVIEW是一种简单易学、形象直观的图形化编程语言,也称为G语言,具有丰富的同传统仪器外观类似的控件库(如旋钮、仪表盘、温度计、波形图表等),可以构建漂亮专业的用户界面,同时,内部提供了庞大的函数库(如数据采集、GPIB、串口控制、数据处理、数据显示及数据存储等),可以满足各行业各领域的开发需求。另外,由于它并非一种封闭的语言,而是具有强大的外部接口能力,可以实现与C/C++、Basic、Matlab等编程语言互通的能力,现在,LabVIEW不仅仅局限于虚拟仪器软件类的开发,而是已经发展成为了一种通用的、完善的、开放的高级编程语言。

LabVIEW语言中四大基本程序框架结构包括顺序结构、选择结构、循环结构和事件结构,其中,循环结构是用的比较多的一种结构,而与之配套使用的移位寄存器更是LabVIEW中的编程难点之一,这次通过一个例子给大家讲解一下For循环和移位寄存器的综合编程方法,帮助大家理解这个知识点。

01

示例说明

这次的例子是求解水仙花数。

先解释一下什么是水仙花数,水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,严格的定义水仙花数,是指一个3位数,它的每个位上的数字的 3次幂之和等于它本身。如371 = 3^3 + 7^3+ 1^3,则371是一个水仙花数。

02

编程思路

根据水仙花数的定义,可以理出下面的编程思路:

主框架使用For循环,循环次数为900次,在循环框上放置一个移位寄存器,其初始值是一个空数组在循环内对100-999之间的数字,每个数字分别验证其百位、十位及个位数字的3次幂之和是否等于其本身的值,若数字是一个水仙花数,则将其添加到移位寄存器的数组中,否则,保持上次移位寄存器的值当900次循环完成后,移位寄存器数组中的值即为所有的水仙花数的值

03

关键点处理

根据上面的编程思路,可以理出实现过程中的两个关键点:

1、将一个三位数如何分解出单独的百位、十位及个位数字?

如对于数字371,如何分解成3个数字3、7、1?

先对数字371除以10,其商为37,余数为1,则1即为个位数的值1对商37继续除以10,得商为3,余数为7,则7即为十位数的值,3为百位数的值

这里使用的关键函数是LabVIEW内置的函数“商与余数 (函数)”,参数说明情况如下图所示:

bed6e0383a28196afa07f40a447d9407.png

其返回参数中,x-y*floor(x/y)是余数部分,floor(x/y)是整数商部分。

2. 在For循环中如何保存获得的水仙花数?

在For循环中,使用移位寄存器存储所有的水仙花数组成的数组,其初始值为空数组,在For循环内若满足水仙花数的条件,则使用数组的插入函数,将该数插入到寄存器的数组中,否则,移位寄存器中的值保持原值。

这里使用的关键知识除移位寄存器外,还使用了“数组插入”函数,参数说明情况如下图所示:

6e94b66b3c32de571264a14c91ce6b27.png

该函数的目的是在n维数组中索引指定的位置插入元素或子数组。

04

程序主代码实现

根据上面的分析,最终使用For循环及移位寄存器实现的代码如下图所示:

782c0f09f8d725b3b244d2e0944c06bd.png

运行后,“数组”控件中输出结果如下图所示:

21a5461752846544649e865273ca9030.png

即所求得的所有水仙花数为153、370、371、407四处数值。

结论

从框图程序中看出,这个例子中涉及到的知识点除For循环结构和与移位寄存器初始化及使用外,还包括了选择结构、常用数组函数的使用及LabVIEW中如何求商与余数等。

大家加关注,可在评论中,查看LabVIEW原程序。

扫码进入LabVIEW专属技术交流群

获取更多学习资料

相关课程推荐:

《龙哥手把手教你学LabVIEW视觉设计》

https://mp.weixin.qq.com/s/IVvrzHu9rwoEfBA7IKXbAg

https://mp.weixin.qq.com/s/WANlR2ph-6hNJ-TICXOptw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值