C语言 · 数字黑洞 算法提高 数字黑洞 问题描述 任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; 2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则...
1019 数字黑洞 (20 分)C语言 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将...
c语言求数字黑洞问题#include <stdio.h> int n;///用于【临时】存储输入的5位数,以及以后计算的最大值和最小值的差值(递归算法)。 int m[100],flag=0;///m[100]用于存放输入的5位数,以及计算出的最大值和最小值的差值; ///flag用于记录数组m的最后一个不为零的下标(或者说是递归的次数)。 fun()...
一是每个数字都要按照四位数字输出,比如1000 - 0001 = 0999,不然的话会判错, 二是6174要拿出来单独判断,这里为了可读性我没有整合。 #include<stdio.h> void upsort(int *a){ //冒泡排序 int mid; for(int i = 0;i<4;i++) for(int j = 0;j<3;j++) if(a[j]>a[j+1]){ mid=a[j];...
这就是数学史上著名的“6174猜想”,也称为6174数字黑洞”,以上计算过程称为卡普雷卡尔运算,这个现象称归敛。 当然,这是4个数的情况,当数字个数为3的时候,循环值为495,也是著名的数学黑洞数字。今天我们只要想跟大家说的是如何用C语言验证6174黑洞。
int n,sum1,sum2,i,j,temp,count=0; int a[4]; scanf("%d",&n); while(n!=6174){ j=0; count++; sum1=0; sum2=0; while(n>0){ a[j]=n%10; j++; n=n/10; } for(i=0;i<4;i++){ for(j=i+1;j<4;j++){
1 注意事项: 参考代码: #include<stdio.h> int max(int b) { int x[4]={0},i,j,n=0,temp; for(i=0;i<4;i++) { x[i]=b%10; b/=10; } for(i=0;i<3;i++) { for(j=i+1;j<4;j++) { if(x[i]<x[j]) { temp...
sum=sum+b[ct++]; }}void print(void){ ct2=ct-1; while(ct2) { printf("%d",b[ct2--]); }}int main(){ long int num; int ljm; int cter=1; printf("Please input a number\n"); scanf("%d",&num); ljm=num*3;...
求5位数所有数字黑洞..题目是这样的: 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的
/*重写了一个,因为用你的变量定义排序很麻烦,而且你的变量使用有点儿乱*/#include <stdio.h>//#include "stdlib.h"int main(void){ int d[4],n; int i,j,t,max,min,k,num; printf("Input an integer:"); scanf("%d",&n); num=0; do { d[2]=n%10; d[1...