永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-03-04 21:39
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-03-04 08:04
#include
#include
using namespace std;
int n;
int p(int num)
{
int i,j,sum,x,t;
int s[4];

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 n1,temp=1;
cin>>n;
if(n!=6174)
{
n1=p(n);
while(n1!=6174)
{
n1=p(n1);
temp++;
}
cout< }
else
cout<<1;
return 0;
}
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-03-04 09:28
你写的不错,其实没什么错误,只是你将
s[j]=s[i+1];误写错了,是i不是j。
只改这一处,其余不变,你在运行下,没问题的。
全部回答
  • 1楼网友:怙棘
  • 2021-03-04 11:05
#include&lt;stdio.h&gt; #include&lt;string.h&gt; #define oddnum "13579" #define num "1234567890" int main(int argc, char *argv[]) { char input[512], c, str[512]; int oddcnt=0, evencnt=0; char *p; memset(input, 0x00, 512); printf("input a number: "); scanf("%s", input); printf("%s\n", input); p=input; while((c=*p++)) { if(!index(num, c)) { printf("error: you should input a number.\n"); return -1; } } while(strcmp(str, input)) { oddcnt=0; evencnt=0; memcpy(str, input, sizeof(input)); p=str; while((c=*p++)) { if(index(oddnum, c)) oddcnt++; else evencnt++; } sprintf(input, "%d%d%d", evencnt, oddcnt, evencnt+oddcnt); printf("%s\n", input); } return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯