阳光-unprecedented_ 2023-11-08 13:15 采纳率: 60%
浏览 2
已结题

水仙花数个数c语言求答疑

img

img

输入之后完全没反应,没办法调试,不知道哪里错了,dev编译过了,但在别的软件显示编译错误

  • 写回答

3条回答 默认 最新

  • a5156520 2023-11-08 14:14
    关注

    a在第一个for循环里,计算完没有恢复原值,然后没有判断当前的数的位数是否大于等于3,所以导致结果出错了;

    可以在第34行后将a恢复为原值,然后再判断一下当前的数的位数是否大于等于3即可。

    修改如下:

    参考链接:
    https://baike.baidu.com/item/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0/2746160

    
    #include <stdio.h>
    #include <math.h>
    
    int function(int a,int b);
    
    int main(void){
        
        int a,b;
        
        scanf("%d %d",&a,&b);
        
        // https://baike.baidu.com/item/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0/2746160
        printf("%d",function(a,b));
        
        return 0;
        
    } 
    
    int function(int a,int b){
        
        int m=0;
        for(a=a;a<=b;a++){
            
            int n=0;
            int k=a;
            while(a!=0){
                a/=10;
                n++;
            }
            
            int j=0;
            a=k;
            int sum=0;
            int i=1;
            while(j<n){
                
                i=a%10;
                a=a/10;
                sum=sum+pow(i,n); 
                j++;
            }
            
            a=k;  // 在使用a计算完位数和计算完各数位n次幂后,将a恢复会原值 
            if(n>=3&&sum==k){  // 判断当前的数a的位数n是否大于等于3 
            //    printf("%d ",k);
                m++;
            }
            
        }
        return m;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 关于stm32hal库驱动ft6336触摸屏遇到的问题
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22