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的值会出错,变成这样:

求解答;
展开
 我来答
百度网友81b4bf3
2015-02-22 · TA获得超过550个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:147万
展开全部
没有去考虑你的逻辑,但至少有一处你错了,
main函数中,数组a没有指定大小,不能a[n]企图通过输入的n随时改变数组的大小。必须在运行前就指定。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式