C语言中的一道题数字黑洞:
6174问题假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次...
6174问题 假设你有一个各位数字互不相同的四位数, 把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数, 并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又 回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环, 并且求出操作的次数 比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4输入 第一行输入n,代表有n组测试数据。 接下来n行每行都写一个各位数字互不相同的四位数输出 经过多少次上面描述的操作才能出现循环样例输入 1 1234样例输出 4*/#include<stdio.h>int pd(int x){ int i=0,ne=0,y; while(y>0) { i++; y=x; while(y>0) { //这是倒转 ne = ne*10+y%10; y/=10; } //开始减 if(ne==6174) { break; } else { y = ne - x; x = y; } ne = 0; } return i; } int main() { int n,i; scanf("%d",&n); int a[n]; for(i =0; i < n; i++) { scanf("%d",&a[i]); a[i]=pd(a[i]); } int j; if(i>0) for(j =0; j < n; j++) { printf("%d\n",a[i]); } return 0;}
为什么i的值会出错,变成这样:
求解答; 展开
为什么i的值会出错,变成这样:
求解答; 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询