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