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

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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵