⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numblckhl.txt

📁 BBS上淘来的一大堆C源代码
💻 TXT
字号:


只要你输入一三位数,要求个,十,百位数字不相同,如不允许输入111,222等。那么
你把这三个数字按大小重新排列,得出最大数和最小数。再两者相减,得到一个新数,再重新排列,再相减,最后总会得到495这个数字,人称:数字黑洞。
举例:输入352,排列得532和235,相减得297;再排列得972和279,相减得693;排列得963和369,相减得594;再排列得954和459,相减得495。
任何数字,屡试不爽!
#include<stdio.h>
#include<stdlib.h>
int n=0;
void fly(int num);

int main(void)
{
    int num,a[3];
    do{
        puts("Please input a number between 100-998");
        scanf("%d",&num);
        a[0]=num /100;
        a[1]=(num-(num / 100)*100)/10;
        a[2]=num-(num/10)*10;
        
    }while(num<100||num>998||((a[0]==a[1])&&(a[0]==a[2]))); 
    
     fly(num);
     
     system("pause");   
    return 0;
}  
  
   void fly(int num) 
   {
       int i,j,k,a[3];
       int s1,s2,sum;
       a[0]=num /100;
       a[1]=(num-(num/100)*100)/10;
       a[2]=num-(num/10)*10;
       for(i=0;i<2;i++)
        for(j=i+1;j<3;j++)
            if(a[i]>a[j])
            {
                k=a[j];
                a[j]=a[i];
                a[i]=k;
            }
        s1=a[2]*100+a[1]*10+a[0];
        s2=a[2]+a[1]*10+a[0]*100;
        sum=s1-s2;
        printf(" a[0]=%d, a[1]=%d, a[2]=%d,s1=%d,s2=%d,sum=%d\n",a[0],a[1],a[2],s1,s2,sum);
        n++;
        if(n>100)
         {
             puts("The number is too big!");
              system("pause"); 
              exit(0) ;  /*退出游戏*/ 
          }
        if(sum==495)
        printf("OK!The number get 495 by %d time.\n",n);
        else
        fly(sum);   
           
     }

数字本身做一定的对调后再相减能得出有归律的数,再有规律的运算就得出495,
Exaple:
654-456=198
-->981-189=792
-->972-279=693
-->963-369=594
-->954-459=495
怎样?看出来了吗?数学原理是怎样我倒不清楚,但可以用编程来找出规律的。
#include <stdio.h>
main(){
    int num,i,a[4],j,t;

    scanf("%d",&num);

    while(num!=495){
        i=1;
            
        while(num){
            
            a[i]=num%10; num=num/10;
            ++i;
        }

        for(j=1;j<=3;j++){
            for(i=1;i<=j;i++){
                if(a[i]>a[j]){
                    t=a[j];
                    a[j]=a[i];
                    a[i]=t;
                }
            }
        }
    num=(a[3]*100+a[2]*10+a[1])-(a[1]*100+a[2]*10+a[3]);
    printf("%d-%d",a[3]*100+a[2]*10+a[1],a[1]*100+a[2]*10+a[3]);
    printf("=%d\n-->",num);

    
    }
    printf("%d\n",num);
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -