花开副富贵 2023-01-01 22:05 采纳率: 66.7%
浏览 41
已结题

C语言 循环 水仙花数 无error但是不停输出1

问题遇到的现象和发生背景 : 本人刚学C语言练习编程题,让输入一个数n,然后输出所有的n位“水仙花”数,就是一个n位数等于各个位数的n次方和
遇到的现象和发生背景,请写出第一个错误信息 : 我的代码会不停地输出1;如果把printf里输出的变量改了,也可能不停地输出1和0,反正就是不输出“水仙花”数
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
int main()
{
    int n,i,s,m=1;
    scanf("%d",&n);
    for(i=1;i<n;i++)
    m=m*10;
     for(i=m;i<m*10;i++)
    {
        int k=i;
        int sum=0;
        while(i>0)
        {
         int j=i%10;
         int p=j;
         i=i/10;
         for(s=1;s<n;s++)
         p=p*j;
         sum=sum+p;
        }
    if(sum==k)
    printf("%d ",k);
     }
    return 0;
}


运行结果及详细报错内容 : 一直不断地输出1
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60% : 我不用for循环,改用如下do-while可以得到正确结果
int main()
{

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


我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏” : 请好人帮我看看for循环那段代码里哪里出问题了
  • 写回答

1条回答 默认 最新

  • 浪客 2023-01-01 23:13
    关注

    你在循环中改变了i的值,导致循环结束不了

    
    int main()
    {
       int n, i, s, m = 1;
       scanf("%d", &n);
       for (i = 1; i < n; i++)
          m = m * 10;
       for (i = m; i < m * 10; i++)
       {
          int k = i;
          int sum = 0;
          while (k > 0) //(i > 0)
          {
             int j = k % 10;//int j = i % 10;
             int p = j;
             k = k / 10; // i = i / 10;
             for (s = 1; s < n; s++)
                p = p * j;
             sum = sum + p;
          }
          if (sum == i)        //(sum == k)
             printf("%d ", i); // printf("%d ", k);
       }
       return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月5日
  • 已采纳回答 1月2日
  • 修改了问题 1月1日
  • 创建了问题 1月1日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line