木木牙 2020-09-03 03:02 采纳率: 0%
浏览 82

求水仙花数,哪里的问题,结果出不来

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。

抱歉,刚学,不太懂,请问是哪里出问题了,求指教

#include <stdio.h>
#include <stdlib.h>
#include<math.h>//pow函数所需
int main()
{
    int n;//n位数
    scanf("%d",n);//输入位数
    int m=1;//用于拆数的运算
    int sum=0;//用于存放每位三次方的总和
    while (n!=0)
    {
        m*=10;  //假如n=3,m最后将等于1000
        n-=1;
    }

 printf("m=%d ",m);//查看m的最终值

    for (int i=m/10;i<m;i++) //假设n=3,i的初始值便为100,要求循环条件为i<1000
    {
       for (int e=1;e<m;e*=10)  //假设n=3,循环条件为e<1000,所以会进行3轮循环
        {
            sum+=pow(i/e%10,3);  //将i/e的三次方,暂存进sum
            /* 假设i=123
            第一轮 e=1 进入循环
                sum=sum+(123/1%10)^3也就是sum=sum+(3)^3
                e=e*10=10
            第二轮 e=10
                sum=sum+(123/10%10)^3也就是sum=sum+(2)^3
                e=e*10=100
            第三轮 e=100
                sum=sum+(123/100%10)^3也就是sum=sum+(1)^3
                e=e*10=1000
                因为e=1000=m,所以无法进入循环/*/


             printf("sum=%d ",sum);//查看sum中的数,可忽略
        }
        if(sum==i)  //如果这个数各位的三次方的和于原本的数相等
        {
            printf("%d ",i);  //输出这个数
        }
        sum=0;//容器归零
    }
    return 0;
}

运行结果
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-09-03 09:06
    关注

    sum=sum+(123/1%10)^3也就是sum=sum+(3)^3
    你这里123是写死的

    重新写一个

    #include "stdio.h"
    #include "math.h"
    void main()
    {
    
        int d,a;
        double n,x,y;
        scanf("%lf",&n);
        x=pow(10,n-1);
        y=pow(10,n);
        for(a=x;a<y;a++)
        {
            int b=a,i,s=0;
            for(i=1;i<=n;i++)
            {
                d=b%10;
                s=s+pow(d,n);
                b=b/10;
            }
            if(a==s)
            printf("%d\n",a);
        }
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败