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。
只改这一处,其余不变,你在运行下,没问题的。
全部回答
#include<stdio.h>
#include<string.h>
#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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯