暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SCL编程实例100例-052-韩信点兵

工控老炮儿 2022-12-21
700

1 | 题目



在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

按从1至5报数,记下最末一个士兵报的数为1;

再按从1至6报数,记下最末一个士兵报的数为5;

再按从1至7报数,记下最末一个士兵报的数为4;

最后按从1至11报数,最末一个士兵报的数为10。

编写程序计算韩信至少有多少兵


2 | 设计分析



采用求余运算,借助已知条件通过枚举法找到满足上述条件的一个最小整数。



3 | 创建功能或功能块



创建功能块FB,命名为“HanxinLeadArmy”。




4 | 定义接口变量



具体接口变量定义见下图:

定义数据类型为整型数的变量#soldierNumQ作为结果输出。



5 | 程序代码



编写程序代码。如下图:


采用WHILE循环,注意循环条件设置成了TRUE,如果报数错误的话可能会导致CPU死机,该种情况应该做一些处理。



6 | 代码测试



在循环OB中调用FB-“HanxinLeadArmy”,调用时会自动创建背景数据块,命名为“InstHanxinLeadArmy”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:


得到结果:韩信至少带了2111个士兵。



7 | 总结



学习使用WHILE循环语句;

学习使用IF条件语句;

学习组合赋值的使用;

学习EXIT语句在循环中的作用。

- END -

工控老炮儿


分享 | 咨询 | 合作 | 共赢


文章转载自工控老炮儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论