C语言或C++的 数学黑洞问题,我好像陷入了死循环。求帮忙

#include<iostream>#include<stdio.h>usingnamespacestd;intn;intp(intnum){inti,j,sum,x,t... #include <iostream>
#include <stdio.h>
using namespace std;
int n;
int p(int num)
{
int i,j,sum,x,t;
int s[4];
/*
int a,b,c,d;
a=num/1000;
b=(num/100)%10;
c=(num/10)%10;
d=num%10;*/
s[0]=num/1000;
s[1]=(num/100)%10;
s[2]=(num/10)%10;
s[3]=num%10;
for(j=0;j<4;j++)
{
for(i=0;i<4-j;i++)
{
if(s[i]>s[i+1])
{
t=s[i];
s[j]=s[i+1];
s[i+1]=t;
}
}
}
sum=(s[3]*1000+s[2]*100+s[1]*10+s[0])-(s[0]*1000+s[1]*100+s[2]*10+s[3]);
return sum;
}

int main()
{
/*int a,b,c,d;
a=1234/1000;
b=(1234/100)%10;
c=(1234/10)%10;
d=1234%10;
cout<<a<<" "<<b<<" "<<c<<" "<<d;*/
int n1,temp=1;
cin>>n;
if(n!=6174)
{
n1=p(n);
while(n1!=6174)
{
n1=p(n1);
temp++;
}
cout<<temp;
}
else
cout<<1;
return 0;
}
展开
 我来答
周杰棍的双节龙
2012-10-03 · 超过25用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:77.9万
展开全部
当J=0时,第二个for语句中的i<4-j也就是i<4,i++,这样的话i最大可以达到3
而在下面的语句中有个S[i+1]也就是S[4],这意味着数组的长度是5个,而你只定义了4的长度
数组长度溢出了
而且那个前后调换的函数貌似也有问题
应该是s[i]=s[i+1]而不是s[j]=s[i+1]
i 和 j 打错了是不是
study427
2012-10-03
知道答主
回答量:12
采纳率:0%
帮助的人:9.6万
展开全部
你写的不错,其实没什么错误,只是你将
s[j]=s[i+1];误写错了,是i不是j。
只改这一处,其余不变,你在运行下,没问题的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式