卡布列克常数(6174问题)问题求解
想了下面这个方法解卡布列克常数,程序编译无错,运行有问题#include <stdio.h>
void max_min(int* arr,int *max,int *min)
{
int *p,*q;
for(p=arr;p<arr+4;p++)
*min=*min*10+*p;
for(q=arr+3;q>=arr;q++)
*max=*max*10+*q;
}
void cut(int *arr,int num)
{
int i,temp;
int *p,*q;
for(i=0;i<4;++i)
{
arr[i]=num%10;
num/=10;
}
for(i=0;i<4;++i)
for(p=arr,q=arr+1;p<arr+3-i;p++,q++)
if(*p>*q)
{
temp=*p;
*p=*q;
*q=temp;
}
}
void middle(int num)
{
int array[4];
int max=0,min=0;
if(num!=6174&&num)
{
cut(array,num);
max_min(array,&max,&min);
num=max-min;
printf("%d-%d=%d\n",max,min,num);
middle(num);
}
}
int main()
{
int number;
scanf("%d",&number);
middle(number);
return 0;
}
[ 本帖最后由 tompobing 于 2013-3-21 20:45 编辑 ]