2301_77394491 2023-04-02 00:38 采纳率: 100%
浏览 27
已结题

c语言编辑程序问题1

验证命题:任何各位数字不全相同的3位正整数经以下变换后均能变为495,称495为3位整数的黑洞数。
变换步骤:对于任意—个各位数字不全相同的3位工整数,将组成该正整数的3个数字重新组合分别生成一个最大数和一个最小数,用最大数减去最小数得到一个新的了位数;再对新的3位数重复上述操作,最多重复7次。
编写程序,接收键盘输入的一个3位正整数,判断各位数字是否不全相同,若不全相同则实施以上变换(不超过7次),输出每步变换后得到的3位整数。

  • 写回答

3条回答 默认 最新

  • 滴水不穿石 2023-04-02 10:14
    关注

    供参考,谢谢!

    img

    img

    img

    #include <stdio.h>
    int func1(int n);
    int func2(int n);
    int main(int argc, char *argv[])
    {
        int n, t;
        scanf("%d", &n);
        if (!func1(n))
        {
            printf("%d不是黑洞数!\n", n);
            getchar();
            return -1;
        }
    
        t = n;
        for (int i = 0; i < 7 && t != 495; i++)
        {
            t = fun2(t);
            printf("%d\n", t);
        }
    
        return 0;
    }
    
    /*判断一个三位数是否不全相同
    */
    int func1(int n)
    {
        if (n < 100 || n > 999)
            return 0;
        int a, b, c;
        a = n % 10;
        b = n / 100;
        c = n / 10 % 10;
        if (!(a == b && b == c))
            return 1;
        return 0;
    }
    
    //生成新的数
    int fun2(int n)
    {
        int a[3], t;
        a[0] = n % 10;
        a[1] = n / 100;
        a[2] = n / 10 % 10;
        for (int i = 0; i < 2; i++)
        {
            for (int j = i + 1; j < 3; j++)
            {
                if (a[i] > a[j])
                {
                    t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
        }
    
        return a[2] * 100 + a[1] * 10 + a[0] - (a[2] + a[1] * 10 + 100 * a[0]);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么