永发信息网

帮我看看6174问题的程序C

答案:1  悬赏:40  手机版
解决时间 2021-05-05 14:22

假设有一个各位数字各不相同的四位数,把所有数字从大到小排序后得到A,从小到大排序后得到B,然后用A-B替换原来这个数,并且继续操作。例如:从1234出发,一次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174。有趣的是,7641-1467=6174,回到了他自己

Input

输入一个四位整数(每个数字各不相同)

Output

输出变化的序列

Sample Input

1234

Sample Output

1234->3087->8352->6174

 

 

下面是我的程序:

#include<stdio.h>
#include<stdlib.h>
int a[5],c;
int ok(int n)

    if(n==6174)
    {printf("%d",n); c=0;return c;}
    if(n!=6174)
    printf("%d->",n);
    return 1;
}
int main()
{
    int n,t,m,i,j,s;
    scanf("%d",&n);
    printf("%d->",n);
    c=1;
    while(c==1)
    {
       a[1]=n/1000;
       a[2]=n/100%10;
       a[3]=n/10%10;
       a[4]=n%10;
        for(i=1;i<=4;i++)
          for(j=1;j<=3;j++)
           if(a[j]>a[j+1])
           {
              s=a[j];
              a[j]=a[j+1];
              a[j+1]=s;
              }
       t=a[1]*1000+a[2]*100+a[3]*10+a[4];
       m=a[4]*1000+a[3]*100+a[2]*10+a[1];
       n=m-t;
       ok(n);
       }
       printf("\n");
       fflush(stdin);
       getchar();
       return 0;
}       

PS:学C语言没有多久,不要说得太复杂了,谢谢。

最佳答案
#include<stdio.h>
#include<stdlib.h>
int a[5],c;
//判断值是否为6174,是则改变c的值并返回0,否则输出当前数并返回
int ok(int n)

    if(n==6174)
    {printf("%d",n); c=0;return c;}
    if(n!=6174)
    printf("%d->",n);
    return 1;
}
int main()
{
    int n,t,m,i,j,s;
    //从控制台接受输入
    scanf("%d",&n);
    printf("%d->",n);
    c=1;
    while(c==1)
    {
    a[1]=n/1000;//取得n值的第四位
    a[2]=n/100%10;//n/100返回为高两位再取余得第三位
    a[3]=n/10%10;
    a[4]=n%10;//取余得第一位
    //排序,最终为升序排列
    for(i=1;i<=4;i++)
    for(j=1;j<=3;j++)
    //在a[j]大于a[j+1]时交换a[j]和a[j+1]的值
    if(a[j]>a[j+1])
    {
    s=a[j];
    a[j]=a[j+1];
    a[j+1]=s;
    }
    //得到从小到大排列的数
    t=a[1]*1000+a[2]*100+a[3]*10+a[4];
    //得到从大到小排列的数
    m=a[4]*1000+a[3]*100+a[2]*10+a[1];
    n=m-t;
    //判断值是否为6174,是则函数返回后退出循环,否则继续循环
    ok(n);
    }
    printf("\n");
    //刷新标准输出流
    fflush(stdin);
    //接受一个字符用于等待按键退出
    getchar();
    return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
帮忙解答如何开通私人空间谢谢了
七喜的手机质量好吗?
号被误封一年 申诉有、用吗
街头篮球PF买哪个特殊角色好,能力对比也说下
CF上海1区什么时候更新到4.6版本
为什么月经来的前 十天会出现像尿一样的东西
鸿文特味餐厅怎么去啊,有知道地址的么
请专业点的人点评神舟优雅HP870D4稳定性等全
直线电机和伺服电机的区别
该不该放弃追她?
华夏25级图标灭了?
刀剑里新绿武不解锁能拿去熔炼精工吗
初一上学期数列的代数式所有问题
怎样完好无损的带过河?
骗人钱财的骗子和小偷哪个更可恶?
推荐资讯
为什么天上人间动漫网看不了了
“开始”的英语单词怎么说?
求一个字的读音。
我键盘从开机到显示桌面都不能按的,都进不去
诺基亚N81存储问题
谁有长乐侨中10届高一新生的录取名单啊
二保怎么去啊,有知道地址的么
CHN2009-26-182628是那里的信鸽?价格多少?
七位数Q号如何买到
龙湖区汕头合滋味卤水火锅地址在哪,我要去那
聚星照相馆怎么去啊,有知道地址的么
地下城为什么进不去了?进去了不显示哦
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?