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日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助