| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:找出数据中的循环数
取消只看楼主 加入收藏
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
结帖率:83.33%
收藏
 问题点数:0 回复次数:1 
找出数据中的循环数
比如数据:12 23 45 56 23 45 56 23 45 56 23 ......
找出数据 23 45 56   
这样的程序怎么写啊
2011-04-27 00:52
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
回复 3楼 hjywyj
/*任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。
求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。
比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:
[82962, 75933, 63954, 61974]
其中数字的先后顺序可以不考虑。
*/
#include "stdio.h"
int m(int a,int b,int c,int d,int e)
{ int i,j,x[5]={a,b,c,d,e},temp;
 for(i=0;i<4;i++)
  for(j=i+1;j<5;j++)
  {     if(x[i]<x[j])
     {temp=x[i];
     x[i]=x[j];
     x[j]=temp;
     }
  }
     return x[0]*10000+x[1]*1000+x[2]*100+x[3]*10+x[4];//排序  找出 最大数

}
int n(int a,int b,int c,int d,int e)
{ int i,j,x[5]={a,b,c,d,e},temp;
 for(i=0;i<4;i++)
      for(j=i+1;j<5;j++)
     {if(x[i]<x[j])
        { temp=x[i];
        x[i]=x[j];
        x[j]=temp;
        }
        }
     return x[4]*10000+x[3]*1000+x[2]*100+x[1]*10+x[0];//排序  找出最小数

}
main()
{
    int num,a,b,c,d,e,i=0,cha,max=0,min=0,k=0;
 scanf("%d",&num);
 while(num){

 a=num/10000;
 b=num%10000/1000;
 c=num%1000/100;
 d=num%100/10;
 e=num%10;
max=m(a,b,c,d,e);
min=n(a,b,c,d,e);
//printf("%d  ",max);
//printf("%d  ",min);
cha=max-min;
printf("%d ",cha);
i++;
if(i==10) break;
num=cha;
 }
}  输入34256,输出41976 ,82962, 75933, 63954, 61974,82962, 75933, 63954, 61974,82962, 75933, 63954, 61974...
   再加什么程序,可以输出82962, 75933, 63954, 61974


[ 本帖最后由 huwengui 于 2011-4-27 12:29 编辑 ]
2011-04-27 08:55
快速回复:找出数据中的循环数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046843 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved