2024216 2022-03-29 15:39 采纳率: 50%
浏览 38
已结题

水仙花数怎么实现?这么写为什么不行?

img

这个题目这么写为什么不成功?

#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i=1,first=1;
while(i<n)
{
first*=10;
i++;
}
i=first;
printf("i=%d\n",i);
while(i<first*10)
{
int t=i,sum=0;
do
{
int d=t%10;
t/=10;
int p=1,j=1;
while(j<n)
{
p*=d;
j++;
}
sum+=p;
//printf("sum=%d\n",sum);
}
while(t>0);
if(sum==i)
{
printf("%d",i);
}
i++;
}
}

  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2022-03-29 15:45
    关注

    你的代码大问题没有,只是int p=1,j=1;这行中,j的初始值错误,应该是j=0
    你的代码实际这个循环只执行了n-1次,导致结果不对了。修改如下:

    #include <stdio.h>
    int main()
    {
        int n;
        scanf("%d",&n);
        int i=1,first=1;
        while(i<n)
        {
            first*=10;
            i++;
        }
        i=first;
        printf("i=%d\n",i);
        while(i<first*10)
        {
            int t=i,sum=0;
            if(t==153)
                int kk = 0;
            do
            {
                int d=t%10;
                t/=10;
                int p=1,j=0;
                while(j<n)
                {
                    p*=d;
                    j++;
                }
                sum+=p;
            }while(t>0);
            if(sum==i)
            {
                printf("%d\n",i);
            }
            i++;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月29日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度