请教c语言达人帮小弟找找下面程序的问题,20分奉上。
#include "stdio.h"
#include "conio.h"
void swap(int a,int b)
{int temp;
temp=a;
a=b;
b=temp;}
fun1(f,f1,f2,f3,f4)
int f,f1,f2,f3,f4;
{int n1,n2,n3,n4;
n1=f/1000;
n2=f/100%10;
n3=f/10%10;
n4=f%10;
f1=n1;f2=n2;f3=n3;f4=n4;}
kblk(int m)
{int a[4],i,j,x,y;
static int t;
if(m==6174) {printf("total times:%d",t);}
else
{ fun1(m,a[0],a[1],a[2],a[3]);
for(i=0;i<3;i++)
{for(j=i+1;j<4;j++)
{if(a[i]<a[j]) swap(a[i],a[j]);}}
x=a[0]*1000+a[1]*100+a[2]*10+a[3];
y=a[0]+a[1]*10+a[2]*100+a[3]*1000;
printf("%d-%d=%d",x,y,x-y);
t++;
kblk(x-y);}}
main()
{int n;
scanf("%d",&n);
if(n<1000||n>9999) printf("input error!");
else
kblk(n);
getch();
}
自己平常编程是有挺多细节不怎么注意,多谢各位指正。我把格式改对之后还是得不到结果,现在把原题目贴上,希望大家再帮忙改正改正。
验证卡布列克运算。任意的一个四位数,只要它们各个位上数字不全相同,就有这样的规律,其中三个步骤设计三个函数实现:
a) 将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大四位数。
b) 将组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小四位数。(如果四个数字中有0,则得到的数不足四位)
c) 求两个数的差,得到一个新的四位数。
重复以上过程,最后得到的结果总是6174。