C语言编程验证卡布列克,C趣味程序百例(26)卡布列克常数
83.卡布列克常数
验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的的四位数;
2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
3)求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数。
*问题分析与算法设计
题目中给出的处理过程很清楚,算法不需要特殊设计,可按照题目的叙述直接进行验证。
*程序与程序注释
#includevoid vr6174(int);
void parse_sort(int num,int *each);
void max_min(int *each,int *max,int *min);
void parse_sort(int num,int *each);
int count=0;
void main()
{
int n;
printf("Enter a number:");
scanf("%d", &n); /*输入任意正整数*/
vr6174(n); /*调用函数进行验证*/
}
void vr6174(int num)
{
int each[4],max,min;
if(num!=6174&&num) /*若不等于74且不等于0则进行卡布列克运算*/
{
parse_sort(num,each); /*将整数分解,数字存入each数组中*/
max_min(each,&max,&min); /*求数字组成的值和最小值*/
num=max-min; /*求值和最小值的差*/
printf("[%d]: %d-%d=%d\n",++count,max,min,num); /*输出该步计算过程*/
vr6174(num); /*递归调用自身继续进行卡布列克运算*/
}
}
void parse_sort(int num,int *each)
{
int i,*j,*k,temp;
for(i=0;i<=4;i++) /*将NUM分解为数字*/
{
j=each+3-i;
*j=num%10;
num/=10;
}
for(i=0;i<3;i++) /*对各保数字从小到大进行排序*/
for(j=each,k=each+1;jif(*j>*k) { temp=*j;*j=*k;*k=temp;}
return;
}
void max_min(int *each,int *max,int *min) /*将分解的数字还原为整数和最小整数*/
{
int *i;
*min=0;
for(i=each;i*min=*min*10+*i;
*max=0;
for(i=each+3;i>=each;i--) /*还原为的整数*/
*max=*max*10+*i;
return;
}
*运行结果
1) Enter a number:4312
[1]:4312-1234=3078
[2]:8730-378=8352
[3]:8532-2358=6174
C趣味程序百例(26)卡布列克常数.doc
下载Word文档到电脑,方便收藏和打印[全文共1185字]
编辑推荐:
下载Word文档
C语言编程验证卡布列克,C趣味程序百例(26)卡布列克常数相关推荐
- c 语言趣味入门,Cc++趣味程序百例(献给CC++初学者).doc
Cc趣味程序百例(献给CC初学者) C/c++趣味程序百例(獻給C/C++初學者) 1.繪製餘弦曲線 2.繪製餘弦曲線和直線 3.繪製圓 4.歌星大獎賽 5.求最大數 6.高次方數的尾數 7.階乘尾數 ...
- c语言医生值班题目讲解,C趣味程序百例(17)哪个大夫哪天值班
55.哪个大夫哪天值班 医院有A.B.C.D.E.F.G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天.现在已知: A大夫比C大夫晚一天值班: D大夫比E大夫晚二天值班: B大夫比G大夫早三 ...
- 谁在说谎c语言编译,C趣味程序百例(15)谁在说谎
50.谁在说谎 张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎.现在问:这三人中到底谁说的是真话,谁说的是假话? *问题分析与算法设计 分析题目,每个人都有可能说的是真话,也有可能说的是 ...
- C语言趣味程序百例精解
1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单.但若规定不能使用数组,问题就变得不容易了 ...
- C语言编程求三位数各位之和,C趣味程序(二)(04)求三位阶乘和数
1.5 阶乘和数 一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数. 例如,145=1!+4!+5!,则145是一个三位阶详细和数.是否还有其它三位阶乘和数?共有多少个阶乘和数? 1. ...
- 1到9组成3个3位数用C语言,C趣味程序百例(18)1~9分成1:2:3的三个3位数
60.1~9分成1:2:3的三个3位数 将1到9 这九个数字分成三个3位数,分求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍.问应当怎样分法. *问题分析与算法设计 问题中的三个数之间 ...
- 黑白子交换c语言思路,C趣味程序百例(28)黑白子交换
87.黑白子交换 有三个白子和三个黑子如下图布置: ○ ○ ○ . ● ● ● 游戏的目的是用最少的步数将上图中白子和黑子的位置进行交换: ● ● ● . ○ ○ ○ 游戏的规则是:(1)一次只能移动 ...
- C语言编程验证卡布列克,C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...
C语言趣味程序百例精解之JAVA实现(83):卡布列克常数 C语言趣味程序百例精解之JAVA实现: public class Test83{ public static void main(Strin ...
- C语言编程>第二十五周 ⑤ 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的 “单词”是指由空格隔开的字符串)。
例题:下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的 "单词"是指由空格隔开的字符串). 例如,若输入 "good ...
最新文章
- Visual Studio Remote Debugger(for 2005/2008) .net远程调试转
- 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!
- [Openwrt 项目开发笔记]:Samba服务vsFTP服务(四)
- 230. Kth Smallest Element in a BST ——迭代本质:a=xx1 while some_condition: a=xx2
- PHP的composer的快速源
- Android图片特效处理之图片叠加
- 云图说|SAP技术画册“一点通”
- HDU2191 多重背包或者01背包 xingxing在努力
- [转载] Flask+Celery+Redis简单操作
- 39. 二叉树的深度(C++版本)
- 谷歌翻译API, 免费采集翻译
- 【Visual Assist X】VAssistX的安装和使用
- Python一行代码实现ADF检验(时间序列平稳性检验)(包含结果解读)
- python怎么判断实数_检查python对象是否可以解释为实数[python]
- ArcEngine 10.2 画圆形
- MAX9286+MAX96705高级辅助驾驶系统ADAS方案
- hcip难不难?华为认证考试难不难?
- 【Java学习笔记】38.Java 发送邮件
- 率土之滨服务器进备战区维护多久,备战区完全解读
- 太阳能发电整流逆变实训
热门文章
- RabbitMQ入门教程 1
- 2022年春天,这15本管理好书不容错过
- 使用VBA在Office中输入特殊字符(3/3)
- 全球及中国薄覆铜层压板行业发展前景预测与投资战略规划研究报告2022-2028年
- 项目管理 | 项目成本估算都有哪些方法?
- 魔域官网服务器维护最新时间,服务器维护后第一轮BOSS时间以及每张地图的BOSS点!...
- eslint --fix found some errors. Please fix them and try committing again.
- 有道云markdown数学公式语法大全
- suggest的使用方法
- VoIP Push 在海外音视频业务中的应用