5位数字黑洞C源码,

问题描述

呵呵我今天把它贴出来啦在我csdn的空间里各位感兴趣的可以去看看啊写的不好不是很完善请各位指导哈献丑啦我也是学java的但是对C我更有把握一点所以程序是用C写的也是看到有同学在这里关于这个问题的发帖了大家多交流啊贴到这顺便给我顶一哈我也是刚刚加进来的**********************************************
解决方案二:
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:
解决方案三:
65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程
解决方案四:
(如果不足5位,则前边补0)。如此往复,数字会
解决方案五:
落入某个循环圈(称为数字黑洞)。
解决方案六:
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:
解决方案七:
[82962,75933,63954,61974]
解决方案八:
个人百度空间http://hi.baidu.com/zjcjava
解决方案九:
author:zjcjav
解决方案十:
*************************************************/#include<stdio.h>#include<stdlib.h>//排序voidsortNum(int*oldNum,int*bigNum){//printf("nsort方法:");本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zjcjava/archive/2011/05/02/6384250.aspx

解决方案

解决方案十一:
/**********************************************
解决方案十二:
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:
解决方案十三:
65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程
解决方案十四:
(如果不足5位,则前边补0)。如此往复,数字会
解决方案十五:
落入某个循环圈(称为数字黑洞)。
解决方案:
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:
解决方案:
[82962,75933,63954,61974]
解决方案:
http://bbs.bccn.net/thread-338031-1-1.html
解决方案:
author:zjcjav
解决方案:
*************************************************/#include<stdio.h>#include<stdlib.h>//排序voidsortNum(int*oldNum,int*bigNum){//printf("nsort方法:");inttemp=0;for(inti=0;i<5;i++){for(intj=0;j<4;j++)if(oldNum[j]>oldNum[j+1]){temp=oldNum[j+1];oldNum[j+1]=oldNum[j];oldNum[j]=temp;}}for(intk=0;k<5;k++){bigNum[k]=oldNum[4-k];//printf("%d",bigNum[k]);}//printf("n");}//转为数字intarrytoInt(int*arry){intnumber;number=arry[0]*10000+arry[1]*1000+arry[2]*100+arry[3]*10+arry[4];returnnumber;}//heidongintblackHol(intdig,int*allAnsw,intans){intsubSort[100],inNum[5],bigNum[5];inti=0,start=0;while(dig){for(intj=0;j<5;j++){inNum[j]=dig%10;//将数字保存在数组中dig=(dig-dig%10)/10;//printf("%d+++",num);//printf("%d+++",inNum[j]);}//printf("nsort方法:");sortNum(inNum,bigNum);subSort[i]=arrytoInt(bigNum)-arrytoInt(inNum);//printf("%d-%d=%dn",arrytoInt(bigNum),arrytoInt(inNum),subSort[i]);if(i==0)dig=subSort[i];//当开始时不会进入循环;因此要手动赋值for(intm=0;m<i;m++){//printf("subsort方法第%d%d次,subSort:%dn",i,m,subSort[i]);dig=subSort[i];//并把差赋给寻控制循环的bigif(subSort[m]==subSort[i])//找到循环圈{intisAs=0;start=m;//把下标赋给开始的值//printf("%dn",m);for(intn=0;n<ans;n++){if(allAnsw[n]==subSort[start])isAs++;}if(isAs==0)//和以前的答案作比较,不同则输出{allAnsw[ans++]=subSort[start];//把每个圈的开始数存入,printf("[");//输出结果for(;start<i;start++)printf("%d,",subSort[start]);printf("]n");break;}}}//if(start!=0)break;//控制外循环结束if(start!=0)break;i++;//printf("输出i的值%dn",i);}returnans;}voidmain(){intnum,allAnsw[100]={0},ans=0;//数字,答案集合,答案个数printf("*****************************************************************************n");printf("输入一个各个位都不相等的五位数如:(34256)!n");printf("任意一个5位数,把它的各位数字重新排列,可以得到一个最大的数:一个最小的数。n");printf("求这两个数字的差,得:41976,把这个数字再次重复上述过程。如此往复,数字会n");printf("得到一个循环圈,求出所有五位数的所有可能循环———————————n");printf("*****************************************************************************n");printf("*********************原题出自2010国信蓝点c语言题目******n");printf("*********************zjcjava完成于2011.4月******n");printf("*****************************************************************************nn");printf("所有情况如下:n");//sortNum(inNum,littNum);for(num=10000;num<=99998;num++){intdig=num;//printf("%d---",num);if(num%11111==0)continue;else{//调用//intdig=34256;ans=blackHol(dig,allAnsw,ans);//答案的个数返回/***********************************************************//*intsubSort[100],inNum[5],bigNum[5];intstart=0,i=0,j=0;;while(dig){printf("这是第%d次循环dig:%d---",i,dig);for(intj=0;j<5;j++){inNum[j]=dig%10;//将数字保存在数组中dig=(dig-dig%10)/10;//printf("%d+++",num);//printf("%d+++",inNum[j]);}//printf("nsort方法:");sortNum(inNum,bigNum);subSort[i]=arrytoInt(bigNum)-arrytoInt(inNum);printf("%d-%d=%dn",arrytoInt(bigNum),arrytoInt(inNum),subSort[i]);if(i==0)dig=subSort[i];for(intm=0;m<i;m++){printf("subsort方法第%d%d次,subSort:%dn",i,m,subSort[i]);dig=subSort[i];if(subSort[m]==subSort[i]){start=m;printf("%dn",m);printf("[");//输出结果for(;start<i;start++)printf("%d,",subSort[start]);printf("]n");break;}}if(start!=0)break;i++;}*//******************************************************/}}printf("所有循环圈的开始值:n");for(intn=0;n<ans;n++)printf("%dt",allAnsw[n]);}
解决方案:
/**********************************************
解决方案:
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:
解决方案:
65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程
解决方案:
(如果不足5位,则前边补0)。如此往复,数字会
解决方案:
落入某个循环圈(称为数字黑洞)。
解决方案:
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:
解决方案:
[82962,75933,63954,61974]
解决方案:
http://bbs.bccn.net/thread-338031-1-1.html
解决方案:
author:zjcjav
解决方案:
*************************************************/#include<stdio.h>#include<stdlib.h>//排序voidsortNum(int*oldNum,int*bigNum){//printf("nsort方法:");inttemp=0;for(inti=0;i<5;i++){for(intj=0;j<4;j++)if(oldNum[j]>oldNum[j+1]){temp=oldNum[j+1];oldNum[j+1]=oldNum[j];oldNum[j]=temp;}}for(intk=0;k<5;k++){bigNum[k]=oldNum[4-k];//printf("%d",bigNum[k]);}//printf("n");}//转为数字intarrytoInt(int*arry){intnumber;number=arry[0]*10000+arry[1]*1000+arry[2]*100+arry[3]*10+arry[4];returnnumber;}//heidongintblackHol(intdig,int*allAnsw,intans){intsubSort[100],inNum[5],bigNum[5];inti=0,start=0;while(dig){for(intj=0;j<5;j++){inNum[j]=dig%10;//将数字保存在数组中dig=(dig-dig%10)/10;//printf("%d+++",num);//printf("%d+++",inNum[j]);}//printf("nsort方法:");sortNum(inNum,bigNum);subSort[i]=arrytoInt(bigNum)-arrytoInt(inNum);//printf("%d-%d=%dn",arrytoInt(bigNum),arrytoInt(inNum),subSort[i]);if(i==0)dig=subSort[i];//当开始时不会进入循环;因此要手动赋值for(intm=0;m<i;m++){//printf("subsort方法第%d%d次,subSort:%dn",i,m,subSort[i]);dig=subSort[i];//并把差赋给寻控制循环的bigif(subSort[m]==subSort[i])//找到循环圈{intisAs=0;start=m;//把下标赋给开始的值//printf("%dn",m);for(intn=0;n<ans;n++){if(allAnsw[n]==subSort[start])isAs++;}if(isAs==0)//和以前的答案作比较,不同则输出{allAnsw[ans++]=subSort[start];//把每个圈的开始数存入,printf("[");//输出结果for(;start<i;start++)printf("%d,",subSort[start]);printf("]n");break;}}}//if(start!=0)break;//控制外循环结束if(start!=0)break;i++;//printf("输出i的值%dn",i);}returnans;}voidmain(){intnum,allAnsw[100]={0},ans=0;//数字,答案集合,答案个数printf("*****************************************************************************n");printf("输入一个各个位都不相等的五位数如:(34256)!n");printf("任意一个5位数,把它的各位数字重新排列,可以得到一个最大的数:一个最小的数。n");printf("求这两个数字的差,得:41976,把这个数字再次重复上述过程。如此往复,数字会n");printf("得到一个循环圈,求出所有五位数的所有可能循环———————————n");printf("*****************************************************************************n");printf("*********************原题出自2010国信蓝点c语言题目******n");printf("*********************zjcjava完成于2011.4月******n");printf("*****************************************************************************nn");printf("所有情况如下:n");//sortNum(inNum,littNum);for(num=10000;num<=99998;num++){intdig=num;//printf("%d---",num);if(num%11111==0)continue;else{//调用//intdig=34256;ans=blackHol(dig,allAnsw,ans);//答案的个数返回/***********************************************************//*intsubSort[100],inNum[5],bigNum[5];intstart=0,i=0,j=0;;while(dig){printf("这是第%d次循环dig:%d---",i,dig);for(intj=0;j<5;j++){inNum[j]=dig%10;//将数字保存在数组中dig=(dig-dig%10)/10;//printf("%d+++",num);//printf("%d+++",inNum[j]);}//printf("nsort方法:");sortNum(inNum,bigNum);subSort[i]=arrytoInt(bigNum)-arrytoInt(inNum);printf("%d-%d=%dn",arrytoInt(bigNum),arrytoInt(inNum),subSort[i]);if(i==0)dig=subSort[i];for(intm=0;m<i;m++){printf("subsort方法第%d%d次,subSort:%dn",i,m,subSort[i]);dig=subSort[i];if(subSort[m]==subSort[i]){start=m;printf("%dn",m);printf("[");//输出结果for(;start<i;start++)printf("%d,",subSort[start]);printf("]n");break;}}if(start!=0)break;i++;}*//******************************************************/}}printf("所有循环圈的开始值:n");for(intn=0;n<ans;n++)printf("%dt",allAnsw[n]);}
解决方案:
/**********************************************
解决方案:
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:
解决方案:
65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程
解决方案:
(如果不足5位,则前边补0)。如此往复,数字会
解决方案:
落入某个循环圈(称为数字黑洞)。
解决方案:
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:
解决方案:
[82962,75933,63954,61974]
解决方案:
http://bbs.bccn.net/thread-338031-1-1.html
解决方案:
author:zjcjav
解决方案:
*************************************************/#include<stdio.h>#include<stdlib.h>//排序voidsortNum(int*oldNum,int*bigNum){//printf("nsort方法:");inttemp=0;for(inti=0;i<5;i++){for(intj=0;j<4;j++)if(oldNum[j]>oldNum[j+1]){temp=oldNum[j+1];oldNum[j+1]=oldNum[j];oldNum[j]=temp;}}for(intk=0;k<5;k++){bigNum[k]=oldNum[4-k];//printf("%d",bigNum[k]);}//printf("n");}//转为数字intarrytoInt(int*arry){intnumber;number=arry[0]*10000+arry[1]*1000+arry[2]*100+arry[3]*10+arry[4];returnnumber;}//heidongintblackHol(intdig,int*allAnsw,intans){intsubSort[100],inNum[5],bigNum[5];inti=0,start=0;while(dig){for(intj=0;j<5;j++){inNum[j]=dig%10;//将数字保存在数组中dig=(dig-dig%10)/10;//printf("%d+++",num);//printf("%d+++",inNum[j]);}//printf("nsort方法:");sortNum(inNum,bigNum);subSort[i]=arrytoInt(bigNum)-arrytoInt(inNum);//printf("%d-%d=%dn",arrytoInt(bigNum),arrytoInt(inNum),subSort[i]);if(i==0)dig=subSort[i];//当开始时不会进入循环;因此要手动赋值for(intm=0;m<i;m++){//printf("subsort方法第%d%d次,subSort:%dn",i,m,subSort[i]);dig=subSort[i];//并把差赋给寻控制循环的bigif(subSort[m]==subSort[i])//找到循环圈{intisAs=0;start=m;//把下标赋给开始的值//printf("%dn",m);for(intn=0;n<ans;n++){if(allAnsw[n]==subSort[start])isAs++;}if(isAs==0)//和以前的答案作比较,不同则输出{allAnsw[ans++]=subSort[start];//把每个圈的开始数存入,printf("[");//输出结果for(;start<i;start++)printf("%d,",subSort[start]);printf("]n");break;}}}//if(start!=0)break;//控制外循环结束if(start!=0)break;i++;//printf("输出i的值%dn",i);}returnans;}voidmain(){intnum,allAnsw[100]={0},ans=0;//数字,答案集合,答案个数printf("*****************************************************************************n");printf("输入一个各个位都不相等的五位数如:(34256)!n");printf("任意一个5位数,把它的各位数字重新排列,可以得到一个最大的数:一个最小的数。n");printf("求这两个数字的差,得:41976,把这个数字再次重复上述过程。如此往复,数字会n");printf("得到一个循环圈,求出所有五位数的所有可能循环———————————n");printf("*****************************************************************************n");printf("*********************原题出自2010国信蓝点c语言题目******n");printf("*********************zjcjava完成于2011.4月******n");printf("*****************************************************************************nn");printf("所有情况如下:n");//sortNum(inNum,littNum);for(num=10000;num<=99998;num++){intdig=num;//printf("%d---",num);if(num%11111==0)continue;else{//调用//intdig=34256;ans=blackHol(dig,allAnsw,ans);//答案的个数返回/***********************************************************//*intsubSort[100],inNum[5],bigNum[5];intstart=0,i=0,j=0;;while(dig){printf("这是第%d次循环dig:%d---",i,dig);for(intj=0;j<5;j++){inNum[j]=dig%10;//将数字保存在数组中dig=(dig-dig%10)/10;//printf("%d+++",num);//printf("%d+++",inNum[j]);}//printf("nsort方法:");sortNum(inNum,bigNum);subSort[i]=arrytoInt(bigNum)-arrytoInt(inNum);printf("%d-%d=%dn",arrytoInt(bigNum),arrytoInt(inNum),subSort[i]);if(i==0)dig=subSort[i];for(intm=0;m<i;m++){printf("subsort方法第%d%d次,subSort:%dn",i,m,subSort[i]);dig=subSort[i];if(subSort[m]==subSort[i]){start=m;printf("%dn",m);printf("[");//输出结果for(;start<i;start++)printf("%d,",subSort[start]);printf("]n");break;}}if(start!=0)break;i++;}*//******************************************************/}}printf("所有循环圈的开始值:n");for(intn=0;n<ans;n++)printf("%dt",allAnsw[n]);}

时间: 2024-07-31 15:15:37

5位数字黑洞C源码,的相关文章

基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)_jquery

废话不多说了,先给大家展示下效果图,感兴趣的朋友继续往下看 哦 查看演示       源码下载 HTML 和上一篇文章:使用jQuery和CSS3制作数字时钟(CSS3篇)一样的HTML结构,只是多了个>date用来展示日期和星期的. <div id="clock" class="light"> <div class="display"> <div class="date"></

基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)_jquery

先给大家展示效果图,感兴趣的朋友可以下载源码哦. 效果演示         源码下载 数字时钟可以应用在一些WEB倒计时效果.WEB闹钟效果以及基于HTML5的WEB APP中,本文将给大家介绍不借助任何图片,如何使用CSS3和HTML来制作一个非常漂亮的数字时钟效果. HTML 我们先在页面中准备一个时钟区域#clock,并且要展示的数字放在.digits中. <div id="clock" class="light"> <div class=&

ym——android源码大放送(实战开发必备)

文件夹 PATH 列表 卷序列号为 000A-8F50 E:. │  javaapk.com文件列表生成工具.bat │  使用说明.txt │  免费下载更多源码.url │  目录列表.txt │   ├─android web应用 │      jqmDemo_static.zip │      jqmMobileDemo-master.zip │      jqmMobileDemo1_1-master.zip │      Location1014.rar │ ├─anko │    

源码-请教关于java中jxl jar包原理

问题描述 请教关于java中jxl jar包原理 最近使用jxl操作excel,对其中源码有些疑问,表示看不懂,请问哪位大神指导源码中的Java代码是怎么操作Excel的? 解决方案 用pio吧,jxl不支持2010+的office文件 解决方案二: 楼主看看这些java书籍对你有没有用 http://download.csdn.net/album/detail/1191

求JPEG编码源码

问题描述 我的JPEG编码C#源码,生成的jpeg文件有点失真,显得比较粗糙,不知道哪里位有更好源码的可以分享? 解决方案 解决方案二:我也再找..................

《面向机器智能的TensorFlow实践》一2.5 源码构建及安装实例:在64位Ubuntu Linux上安装GPU版TensorFlow

2.5 源码构建及安装实例:在64位Ubuntu Linux上安装GPU版TensorFlow 如果希望使用带有GPU支持的TensorFlow,那么最可能的选择是从源码构建和安装.本节给出了一个完整的安装参考实例,详细介绍了安装和运行TensorFlow所需的每一具体步骤.请注意,本示例中的操作系统为64位Ubuntu Linux发行版,因此如果你使用的是其他Linux发行版,则可能需要对某些命令进行修改(如apt-get).如果希望在Mac OS X上从源码构建TensorFlow,笔者推荐

ubuntu15.10 64位编译Android 5.0源码

问题描述 ubuntu15.10 64位编译Android 5.0源码 使用的是ubuntu15.10 64 bit的,下载了Android 5.0的源码在, 准备编译,编译过程报如下错误: Install: out/host/linux-x86/bin/acp Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y prebuilts/misc/linux-x86/bison/bison -d -o out/host/linux-x

在ubuntu12.04 64位下编译从github上下载的android系统最新源码,出现编译错误

问题描述 在ubuntu12.04 64位下编译从github上下载的android系统最新源码,出现编译错误 在ubuntu12.04 64位下编译从github上下载的android系统最新源码,出现编译错误 make: *** 没有规则可以创建"out/build-full.ninja"需要的目标"prebuilts/build-tools/linux-x86/bin/ckati". 停止. 耗费了2天了还没解决,急 解决方案 http://zhidao.ba

Ubuntu10.10(64位)编译Android2.3源码问题解决

http://www.cnblogs.com/jvlstudio/archive/2011/05/14/2046562.html 1.安装Ubuntu 10.10      可选择使用Wubi安装. 2.安装Python      Ubuntu 10.10 已经安装了2.6版. 3.安装JDK      更新软件库:      sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"      s