找一缕阳光呀 2017-07-24 13:23 采纳率: 93.3%
浏览 783
已采纳

为什么第一个代码是WA第二个就能过了啊???

假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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
1.#include
#include
int main()
{
int i,t,j,n,q;
int count=0;
scanf("%d",&n);
while(n--)
{
int a,s[4];
scanf("%d",&a);
do
{
q=a;
s[0]=a/1000;
s[1]=a/100%10;
s[2]=a/10%10;
s[3]=a%10;
for(i=0;i for(j=i+1;j if(s[i]>s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
t=(s[0]+s[1]*10+s[2]*100+s[3]*1000)-(s[0]*1000+s[1]*100+s[2]*10+s[3]);
count++;
a=t;
}while(q!=t);
printf("%d\n",count);
}
return 0;
}
2.#include
#include
int main() {

int n;
scanf("%d",&n);
while(n--)
{
int m,a[4],q,t,conut=0,i,j;
scanf("%d",&m);
do{
q=m;
a[0]=m/1000;
a[1]=m/100%10;
a[2]=m/10%10;
a[3]=m%10;
for(i=0;i for(j=i+1;j if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
t=(a[0]+a[1]*10+a[2]*100+a[3]*1000)-(a[0]*1000+a[1]*100+a[2]*10+a[3]);
conut++;
m=t;
}while(q!=t);
printf("%d\n",conut);
}
return 0;
}#include
#include
int main() {

int n;
scanf("%d",&n);
while(n--)
{
int m,a[4],q,t,conut=0,i,j;
scanf("%d",&m);
do{
q=m;
a[0]=m/1000;
a[1]=m/100%10;
a[2]=m/10%10;
a[3]=m%10;
for(i=0;i for(j=i+1;j if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
t=(a[0]+a[1]*10+a[2]*100+a[3]*1000)-(a[0]*1000+a[1]*100+a[2]*10+a[3]);
conut++;
m=t;
}while(q!=t);
printf("%d\n",conut);
}
return 0;
}

  • 写回答

3条回答 默认 最新

  • threenewbee 2017-07-30 13:14
    关注

    无非就是代码的输出结果(格式)和是否在时间/空间上超过了限制。你两个代码自己比较下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题