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

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 C++ /QT 内存权限的判断函数列举
  • ¥15 深度学习GFnet理解问题
  • ¥15 单细胞小提琴堆叠图代码
  • ¥80 LS dyna mpp并行报错
  • ¥50 升级strust2版本到2.3.15.1后使用ognl3.0.6.jar windows环境中没有问题,但部署到linux环境报错
  • ¥15 vue页面,node封装接口
  • ¥15 求TMS320F280039C工程模板!
  • ¥15 delphi+fastreport实现分组补空打印问题
  • ¥15 使用python把两台mysql数据库服务器数据导出和导入
  • ¥15 NodeBB论坛配置Apache Solr中文搜索引擎的详细教程