| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖, 1 人收藏
标题:死循环,没找到自己程序问题在哪里,求大神指导
取消只看楼主 加入收藏
上海之恋
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-2-18
结帖率:0
收藏(1)
已结贴  问题点数:8 回复次数:1 
死循环,没找到自己程序问题在哪里,求大神指导
题目描述:假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序输出变化过程。
比如输入1234执行顺序是1234->3087->8352->6174->6174


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define num 1100
int comp1(const void *_a, const void *_b)
{
    int *a=(int*)_a;
    int *b=(int*)_b;
    return *b-*a;
}
int comp2(const void *_a, const void *_b)
{
    int *a=(int*)_a;
    int *b=(int*)_b;
    return *a-*b;
}

void main(){
    int n,i=0,j,sum1=0,sum2=0,newNum,l=0,newNums[num],a[num],b[num],k,s=0;
    scanf("%d",&n);
    newNums[l++]=n;
    printf("%d",n);
while(s!=1){

while(n)
{
    a[i++]=n%10;
    n=n/10;
}

 for(j=0;j<i;j++)
     b[j]=a[j];


qsort(a,i,sizeof(int),comp2);
qsort(b,i,sizeof(int),comp1);


for(k=0;k<i;k++)
     sum1+=a[k]*int(pow(10,k));
for(k=0;k<i;k++)
     sum2+=b[k]*int(pow(10,k));

  newNum=sum1-sum2;

for(k=0;k<l;k++)
{
  if(newNums[k]==newNum)
      break;
}

  if(k<l)
  {
      printf("->%d",newNum);
      s=1;
  }
  else
  {
    printf("->%d",newNum);
    n=newNum;
    i=0;
    sum1=0;
    sum2=0;

  }

    }
}
搜索更多相关主题的帖子: return include 1234 
2013-01-31 18:25
上海之恋
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-2-18
收藏
得分:0 
2013-01-31 19:46
快速回复:死循环,没找到自己程序问题在哪里,求大神指导
数据加载中...
 
   



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

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