版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要卡布列克运算是指给定任意一个四位整数 N(N>0),其各位数字不完全相同。这个 数必有这样的规律:1)把组成N的四个数字从小到大排列,构成最小四位数min; 2)把组成N的四个数字从大到小排列,构成最大四位数max 3)然后求max与min之差,得到一个新的四位数 ; 把新的四位数重复以上过程,最后总能得到结果: 6174该验证过程采用面向对象方法, 将数学和编程相结合, 再通过构建对象数组来完成。 关键词:卡不列克运算、验证、面向对象、对象数组2设计方案2.1整体设计方案如下:输入(1个4位数)»»检查输入获取各个数位并排序验证过程生成最小四位数 min最大四位
2、数 maxmax与min之差重复以上流程直到结果为61742.1.1输入检查输入要求各位不完全相同的4位数boolkabulek :isAcceptable(intn)if ( n < 1000) returnfalse ;if ( n >= 10000) returnfalse ;int arr4;for (int i = 0;i != 4;i+)arri =n % 10;n /= 10;for ( int i = 0;i != 3;i+)for (int j = i + 1;j != 4;j+)获取各个数位并排序相关头文件cstdlib.hkabulek.hvoid kabul
3、ek :setsort( intn)for (int i = 0;i != 4;i+) nnnni =n % 10;n /= 10;std:sort (nnnn, nnnn + 4);生成最小四位数 min最大四位数maxint kabulek :minForm()int n = 0;for (int i = 0;i != 4;i+)n *= 10;n += nnnn i;return n;int kabulek :maxForm()int n=0;for ( int i = 3;i >= 0;i-)n *= 10;n += nnnn i;return n;验证过程void kabule
4、k:showStep( int n)std:cout << maxForm() <<"-"<<std:setw<<std:setfill( '0')<<minForm() <<"=" <<n <<std:endl;void kabulek :verify。if (hasAccepted= false ) std:cout<<"未接受数字! !" << std:endl;return ;=std:cou
5、t << "num:" <<num << std:endl;this ->setsort(num);int n = maxForm() - minForm();this ->showStep(n);while (n!=6174)this ->setsort(n);n = maxForm() - minForm();this ->showStep(n);std:cout << "检验完毕"<<std:endl;2.1.2验证过程void main()int count =
6、0;kabulek k10000;/建立对象数组for (int i = 1;i != 10000;i+)ki.setNum(i);ki.verify();return ;3.程序演示:SBC:Windowssystem32cmd.ex e请按任意键继续C:Windowssystem32cmd.exe7443'3447=39963963-3699=62646642-2466=41767641-1467=6174检验完毕1027请按任意键继续num:10277210-0127=70838730-0378=83528532-2358=6174检验完毕1028请按任意键继续-num:1028
7、8210-0128=80823820-828»8532B532-2358=6174检验完毕1029倩按5負键吐垃结论无论学习什么,亲自动手去做了才能得到最深刻的体会。附录代码kabulek.h#pragma onceclass kabulek/要验证的数字int num;/十进制位int nnnn4;/是否接受到一个符合要求的数字bool hasAccepted;public :默认构造函数kabulek();kabulek( int );kabulek();/验证void verify();/静态函数isAcceptabble判断是否符合要求static bool isAccept
8、able( int );/num settervoid setNum( int n);private :/构成最小四位数int mi nF orm();/构成最大四位数int maxForm();/求取一个4位数的各位并排序void setsort( int n);/输出验证的每一次步骤void showStep( int );kabulek.cpp#i nclude "kabulek.h" #includealgorithm #inelude <iostream> #inelude <iomanip>void kabulek:setsort( in
9、tn)for ( inti = 0;i != 4;i+) nnnn i=n % 10;n /= 10;std:sort (nnnn, nnnn + 4);kabulek :kabulek()hasAccepted = false ;kabulek :kabulek( int n):num( n)hasAccepted = isAcceptable( n);if (!hasAccepted) return ;this ->setsort( n);kabulek :kabulek()void kabulek:showStep( int n)std:cout << std:setw
10、<< std:setfill( 'O')<< maxForm() <<"-"<<std:setw <<std:setfill( '0') <<minForm() <<"=" <<n <<std:endl;void kabulek :verify()if (hasAccepted= false ) std:cout<<"未接受数字! !" << std:endl;return
11、 ;std:cout << "num:" <<num << std:endl; this ->setsort(num);int n = maxForm() - minForm();this ->showStep(n);while (n!=6174)this ->setsort(n);n = maxForm() - minForm();this ->showStep(n);std:cout << "检验完毕"<<std:endl;boolkabulek :isAccepta
12、ble(intn)if ( n < 1000) return false ;if ( n >= 10000) returnfalse ;int arr4;for (int i = 0;i != 4;i+)arri =n % 10;n /= 10;for (int i = 0;i != 3;i+) for (int j = i + 1;j != 4;j+)void kabulek :setNum( int n)std:cout << n << std:endl; system( "Pause");hasAccepted=isAcceptab
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河道保洁工作总结(2篇)
- 安全锤生产批发讲解
- 车联网与AI的未来
- 全球人工智能福祉峰会
- AI在大数据与会计中的应用
- 2026年心理健康基础知识普及
- 2026年救生员证理论知识
- 幼师职业发展规划与目标设定
- AI在商务阿拉伯语中的应用
- 中高考仅剩70天家长应该做点什么
- GB/T 21186-2026傅立叶变换红外光谱仪
- 2025年事业单位预防医学岗《公卫知识》真题及答案解析
- 2025年度中国展览数据统计报告
- (完整版)企业商业秘密管理体系及保密措施
- 福建省特安安全技术服务中心有限公司招聘笔试题库2026
- 2026年超星尔雅学习通《当代大学生国家安全教育》章节通关试题库及完整答案详解(有一套)
- 2026年高考(湖南卷)英语试题及答案
- 【期末】《国家安全概论》(西安交通大学)期末考试慕课答案
- 营销部门地推人员岗位职能与考核细则
- 医疗器械经营质量管理规范自查报告
- 循环肿瘤DNA(ctDNA)检测临床应用
评论
0/150
提交评论