小白求指教! 2022-08-21 23:05 采纳率: 80%
浏览 35
已结题

做判断一个数是否为水仙花数的练习,如153为三位数,153=1^3+5^3+3^3则该数为水仙花数,但是程序运行总出错。

问题遇到的现象和发生背景

做判断一个数是否为水仙花数的练习,如153为三位数,153=1^3+5^3+3^3则该数为水仙花数,但是程序运行总出错。

问题相关代码,请勿粘贴截图

#include<stdio.h>
int three(int k,int count);
int main()
{
int x;
int n=0;
int d=1;
int ret;
scanf("%d",&x);
int t=x;

 int sum=0;
 while(x>0){
     n++;
     x/=10;
     d*=10;
     
 }
 d/=10;
 while(d>0){
     ret=x/d;
     x%=d;
     d/=10;
     sum+=three(ret,n);
     
 }
 if(sum==t){
     printf("%d是水仙花数"); 
 }else printf("不是。"); 
 
  return 0;

}

int three(int k,int count)
{
int i;
for(i=1;i<=count;i++) {
k*=k;
}
return k;
}

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2022-08-22 10:10
    关注

    题主的代码问题出在int three(int ,int ) 函数里,求数 k 的几次方写得有问题,修改处见注释,供参考:

    #include <stdio.h>
    int three(int k, int count);
    int main()
    {
        int x;
        int n = 0;
        int d = 1;
        int ret;
        scanf("%d", &x);
        int t = x;
    
        int sum = 0;
        while (x > 0) {
            n++;
            x /= 10;
            d *= 10;
        }
        d /= 10; x = t;//修改
        while (d > 0) {
            ret = x / d;
            x %= d;
            d /= 10;
            sum += three(ret, n);
        }
        if (sum == t) {
            printf("%d是水仙花数", t);//修改
        }
        else printf("不是。");
    
        return 0;
    }
    int three(int k, int count)
    {
        int i, t; //修改
        for (i = 1, t = 1; i <= count; i++) {
            t *= k; //修改
        }
        return t;   //修改
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月3日
  • 已采纳回答 8月26日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 请教,这是用chatgpt写的CAD LISPD脚本,需求是画一个由双直线组成的矩形
  • ¥50 微信小程序 成功包奶茶啊
  • ¥15 计算机博弈的六子棋代码
  • ¥15 在Fetch API中传送的参数为何不起作用?
  • ¥15 问题遇到的现象和发生背景 360导航页面千次ip是20元,但是我们是刷量的 超过100ip就不算量了,假量超过100就不算了 这是什么逻辑呢 有没有人能懂的 1000元红包感谢费
  • ¥30 计算机硬件实验报告寻代
  • ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。