黑洞数(C语言)

黑洞数也称为陷阱数,又称"Kaprekar问题",是一类具有奇特转换特性的数。

任何一个各位数字不全相同的三位数,经有限次"重排求差"操作,总会得到495。最后所得的495即为三位黑洞数。所谓"重排求差"操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数。)

例如,对三位数207:

第1次重排求差得:720 - 27 = 693;

第2次重排求差得:963 - 369 = 594;

第3次重排求差得:954 - 459 = 495;

以后会停留在495这一黑洞数。如果三位数的3个数字全相同,一次转换后即为0。

任意输入一个三位数,编程给出重排求差的过程。

#include <stdio.h>

int test(char arr\[\] )

{

int i = 0;

int j = 0;

int num1 = 0;

int num2 = 0;

char temp = '\0';
for( i = 0 ; i < 2 ; i++) 对字符数组排序
{
for( j = 0 ; j < 3 - i - 1 ;j++)
{
if( arrj > arrj+1 )
{
temp = arrj;
arrj = arrj+1;
arrj+1 = temp;
}
}
}

num1 = arr0-'0' + ( arr1 -'0' ) * 10 + ( arr2 - '0' ) *100 ;

num2 = arr2-'0' + ( arr1 - '0' ) * 10 + ( arr0 - '0' ) *100 ;

printf("%d - %d = %d\n",num1,num2,num1-num2);

arr0 = (char)((num1-num2)/100)+'0' ; 对 num1 - num2 处理成新的数组

arr1 = (char)(((num1-num2)/10)%10)+'0';

arr2 = (char)((num1-num2)%10)+'0';

return num1-num2;

}

int main()

{

char arr4 = { '\0'};

scanf("%s",arr); 接收三位数

while( 1 )

{

if( test(arr) == 495 )

{

return 0;

}

}

return 0;

}

相关推荐
aaaameliaaa9 分钟前
指针之总结
c语言·笔记·算法
宵时待雨24 分钟前
优选算法专题9:哈希表
数据结构·算法·散列表
gwf21634 分钟前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
agathakuan1 小时前
Wireshark 解密並導出TLS 1.2 / TLS 1.3 明文的方法(可控制 Client 端)
c语言·wireshark·ssl·openwrt
noipp1 小时前
推荐题目:洛谷 P6231 [JSOI2013] 公交系统
c语言·数据结构·c++·算法·游戏·洛谷·luogu
c238561 小时前
C/C++每日一练6
c语言·c++·算法
wdfk_prog1 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
AI小码2 小时前
把动作「画」给视频世界模型,跨本体双向推演,李飞飞参与
大数据·人工智能·算法·ai·大模型·音视频·编程
时间的拾荒人2 小时前
MySQL C语言连接 - 从入门到实战
android·c语言·mysql
KaMeidebaby3 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法