ssmyego 2021-11-19 07:58 采纳率: 50%
浏览 101
已结题

编写程序,实现水仙花数的计算

1)输入一个 n 位的数,先判断是否为水仙花数。如果是水仙花数,则调整这个
n 位数的各位数字的顺序,获取相同的 n 个数字所能组成的所有数,并按数
的大小进行排序后,找到其中最小的那个数。
2)可以求出所有 n 位数中的水仙花数,并按大小排序显示在界面上。

  • 写回答

2条回答 默认 最新

  • 关注

    代码如下:

    #include <stdio.h>
    #include <math.h>
    #include <process.h>
    
    //冒泡排序
    void bubble_sort(int a[],int n)
    {
        int i,j,t;
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-1-i;j++)
            {
                if(a[j] > a[j+1])  //从小到大,升序
                {
                    t = a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
        }
        return ;
    }
    //判断是否是水仙花
    int isSxh(int n,int p[],int *ws)
    {
        int s = 0;
        int a = n;
        int d = 0;
        int i = 0;
        while(a>0)
        {
            int d = a%10;
            p[i] = d;
            s += (d*d*d);
            a = a/10;
            i++;
        }
        *ws = i;
        if(s == n)
            return 1;
        else
            return 0;
    }
    int main()
    {
        int n,s=0,big=0;
        int p[20],i,ws=0;
        scanf("%d",&n);
        if(!isSxh(n,p,&ws)) //不是水仙花数
        {
            printf("不是水仙花数\n");
            return 0;
        }
        //处理水仙花数
        bubble_sort(p,ws); //所有数按照从小到大排序
    
        if(ws==3)
        {
            printf("%d ",p[0]*100+p[1]*10+p[2]);
            printf("%d ",p[0]*100+p[2]*10+p[1]);
            printf("%d ",p[1]*100+p[0]*10+p[2]);
            printf("%d ",p[1]*100+p[2]*10+p[0]);
            printf("%d ",p[2]*100+p[0]*10+p[1]);
            printf("%d\n",p[2]*100+p[1]*10+p[0]);
        }
        
    
    
        s=0;
        for(i=0;i<ws;i++)
            s = s*10 + p[i];
        printf("最小数是%d\n",s);
        s = pow(10.0,ws-1); //n位最大数
        big = pow(10.0,ws)-1; //n位最小数
        //变量从最大的数到最小的数,并找出其中的水仙花数
        for (i=big;i>=s;i--)
        {
            if (isSxh(i,p,&ws))
            {
                printf("%d ",i);
            }
        }
        system("pause");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月11日
  • 已采纳回答 12月3日
  • 创建了问题 11月19日

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行