C语言出错验证3位黑洞数

C语言出错验证3位黑洞数,第1张

#include<stdio.h>

int sub(int i)

{

int p,k,j,h,max,min,a[4]

a[1]=i/100

a[2]=(i/10)%10a[3]=i%10

for(k=1k<=2k++)

for(j=k+1j<=3j++)

if(a[k]<a[j])

{ h=a[k]a[k]=a[j]a[j]=h}

max=a[1]*100+a[2]*10+a[3]

min=a[3]*100+a[2]*10+a[1]

p=max-min

if(p<100 &&p/10==p%10) p=0

return (p)

}

int main()

{

int n,n1,y,i,m

printf("\n验证任意3位数'重排求差' *** 作,可于495或0.")

for(y=0,n=101n<=999n++)        //修改n的取值范围,可求出最多的转换次数

{

i=nm=0

while(i!=495 &&i!=0)

{ i=sub(i)m++}

if(m>y) { y=mn1=n}

}

printf("\n 当n=%d时,最多转换%d次可至495或0:",n1,y)

printf("\n %d",n1)

i=n1

while(i!=495 &&i!=0)

{ i=sub(i)printf("->%d",i)}

return 0

}

上面的回答很正确,要改一下这儿:

if(a>b)swap(&a,&b)

if(a>c)swap(&a,&c)

if(b>c)swap(&b,&c)

此程序就是输入一个3位数,然后,把该三位数的3个数字变换顺序使变成最小的数和最大的数,输出两者之差,然后把这个差中的3位数调换顺序,使之变成最小的数和最大的数,再把两者的差值输出。比如说输入数为123,则第一个数为:321-123=198,第二个数为:981-189=792,第三个数为:972-279=693,第四个数为:963-369=594,以此类推,直到输出8个数为止。                           

#include<stdio.h>

int main(void)

{

int number,x,y,a,b,c,t,i,max,min,mid

  scanf("%d",&number)i=1

while(number!=495){

a=number/100

b=number%100/10

c=number%10

mid=a+b+c

max=a>b?a:b max=max>c?max:c

min=a>b?b:a min=min>c?c:min

mid=mid-min-max

x=max*100+mid*10+min

y=min*100+mid*10+max

/*---------*/

number=x-y

printf("%d: %d - %d = %d\n",i,x,y,number)

i++

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12127761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存