王鹿其 发表于 2023-10-8 19:31:18

判断水仙花数,我这个代码错在哪

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
        int a=100,b,c,d;
        b=a%10;
        c=(a/10)%10;
        d=a/100;
       
       
        do
        {
                if(a=pow(b,3)+pow(c,3)+pow(d,3))
                {
                        cout<<a;
                }
               
               
                a++;
        }
        while(a<1000);
       
       
       
       
        return 0;
}

isdkz 发表于 2023-10-8 19:31:41

代码中的问题在于if语句中的赋值运算符“=”应该改为相等运算符“==”,因为“=”是赋值运算符,会将右边的结果赋值给左边的变量a,而“==”是相等运算符,用于判断两个值是否相等。因此,应该将if语句改为:

if(a == pow(b,3)+pow(c,3)+pow(d,3))

另外,还需要在程序开头添加头文件<cstdio>,以便使用pow函数。完整代码如下:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
      int a=100,b,c,d;
      b=a%10;
      c=(a/10)%10;
      d=a/100;
      
      
      do
      {
                if(a == pow(b,3)+pow(c,3)+pow(d,3))
                {
                        cout<<a;
                }
               
               
                a++;
      }
      while(a<1000);
      
      
      
      return 0;
}

Mike_python小 发表于 2023-10-8 19:32:41

你的代码存在一些错误和逻辑问题。在下面是我对你的代码进行的一些修改和解释。


#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int a = 100, b, c, d;
    b = a % 10;
    c = (a / 10) % 10;
    d = a / 100;

    do {
      if (a == pow(b, 3) + pow(c, 3) + pow(d, 3)) { // 使用==进行相等比较
            cout << a << endl; // 输出水仙花数
      }

      a++;
      b = a % 10; // 更新b的值
      c = (a / 10) % 10; // 更新c的值
      d = a / 100; // 更新d的值
    } while (a < 1000);

    return 0;
}


代码修改解释如下:

1. 在条件语句中,你应该使用==来进行相等比较,而不是使用赋值运算符=。
2. 在输出水仙花数之后,请记得换行,以使输出结果更加清晰。
3. 在循环体内部,需要更新变量b、c、d的值,以保证每次循环都计算下一个数的个位、十位和百位数字。

希望这样解答能帮到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 判断水仙花数,我这个代码错在哪