文章清单1,什么是数字黑洞? 二、解决方法1 .获取数字上各位数字2.2重复执行,分别分配给两个数组进行排序3 .将数组内容转换为数字并取差6174。 总代码总结如下
一、什么是数字黑洞? 数字黑洞是一种任意选择4位数字,将所有数字按从小到大的顺序排列,将所有数字按从小到大的顺序排列,前者减去后者得到新数字的现象。 如果对新得到的数据重复上述操作,则在7个步骤内一定能得到6174。
为了实现以上过程,如果输入的4位数字全部相同,则重新输入,在画面上显示按步骤减去的结果。
二、解决方法1 .获取数字上各位数字代码。
时间=0; 获取while(num )//num中每个位置的数字(arr(3-temp )=num; num /=10; 特普; }2.为两个数组分别赋值,并按如下方式对代码进行排序: 最简单的冒泡排序:
for(intI=0; i 4; I//代入两个数组时,简化为一个数组,排序的结果{arr_min[i]=arr[i]; arr_max[i]=arr[i]; }for(intI=0; i 4; (I )//从小到大排序) for ) intj=0; j 4 – i – 1; j () if ) ARR_max[j]ARR_max[j1] ) {temp=arr_max[j]; arr_max[j]=arr_max[j 1]; arr_max[j 1]=temp; }}for(intI=0; i 4; I ) )//位次小(for ) intj=0; j 4 – i – 1; j () if ) ARR_min[j]ARR_min[j1] ) {temp=arr_min[j]; arr_min[j]=arr_min[j 1]; arr_min[j 1]=temp; }}3.将数组的内容转换为数字,差分for(intI=0; i 4; I )//转换为数字(num_max=(int ) ARR_max[I]*pow ) 10,(双精度) )3 – i ) ); }for(intI=0; i 4; I ) (num_min=(int ) arr_min[I]*pow ) 10,) double ) (3 – i ); }num=num_max – num_min; 重复执行,直到出现取//差的6174。 总代码如下: int num_max=0; //大小int arr[4],保存按大小顺序排序的数字int num_min=0; //输入数字的各位值int arr_min[4];//每位值int arr_max[4]; int temp=0; int num=1001; //输入的数字int frequency=0; //执行次数while(num!=6174num1000(temp=0; 获取while(num )//num中每个位置的数字(arr(3-temp )=num; num /=10; 特普; }//arr[0]=num/1000; //num%1/100//ARR[1]=num00/100; //arr[2]=num % 100/10; //arr[3]=num % 10; for(intI=0; i 4; I//代入两个数组时,简化为一个数组,排序的结果{arr_min[i]=arr[i]; arr_max[i]=arr[i]; }for(intI=0; i 4; (I )//从小到大排序) for ) intj=0; j 4 – i – 1; j () if ) ARR_max[j]ARR_max[j1] ) {temp=arr_max[j]; arr_max[j]=arr_max[j 1]; arr_max[j 1]=temp; }}for(intI=0; i 4; I ) )//位次小(for ) intj=0; j 4 – i – 1; j () if ) ARR_min[j]ARR_min[j1] ) {temp=arr_min[j]; arr_min[j]=arr_min[j 1]; arr_min[j 1]=temp; }}for(intI=0; i 4; I )//转换为数字(num_max=(int ) ARR_max[I]*pow ) 10,(双精度) )3 – i ) ); }for(intI=0; i 4; I ) (num_min=(int ) arr_min[I]*pow ) 10,) double ) (3 – i ); }num=num_max – num_min; //取差num_max=0; num_min=0; printf(‘%d ‘,num ); 自由金融; }printf ()共运行了%d次)、frequency ); 以上就是我今天要讲的内容,本文只是简单介绍了数字黑洞的解决思路,比较简单。