鱼C论坛

 找回密码
 立即注册
查看: 1716|回复: 2

[已解决]判断水仙花数,我这个代码错在哪

[复制链接]
发表于 2023-10-8 19:31:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}
最佳答案
2023-10-8 19:32:41
你的代码存在一些错误和逻辑问题。在下面是我对你的代码进行的一些修改和解释。
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int main()
  5. {
  6.     int a = 100, b, c, d;
  7.     b = a % 10;
  8.     c = (a / 10) % 10;
  9.     d = a / 100;
  10.     do {
  11.         if (a == pow(b, 3) + pow(c, 3) + pow(d, 3)) { // 使用==进行相等比较
  12.             cout << a << endl; // 输出水仙花数
  13.         }
  14.         a++;
  15.         b = a % 10; // 更新b的值
  16.         c = (a / 10) % 10; // 更新c的值
  17.         d = a / 100; // 更新d的值
  18.     } while (a < 1000);
  19.     return 0;
  20. }
复制代码

代码修改解释如下:

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

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

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-8 19:32:41 | 显示全部楼层    本楼为最佳答案   
你的代码存在一些错误和逻辑问题。在下面是我对你的代码进行的一些修改和解释。
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int main()
  5. {
  6.     int a = 100, b, c, d;
  7.     b = a % 10;
  8.     c = (a / 10) % 10;
  9.     d = a / 100;
  10.     do {
  11.         if (a == pow(b, 3) + pow(c, 3) + pow(d, 3)) { // 使用==进行相等比较
  12.             cout << a << endl; // 输出水仙花数
  13.         }
  14.         a++;
  15.         b = a % 10; // 更新b的值
  16.         c = (a / 10) % 10; // 更新c的值
  17.         d = a / 100; // 更新d的值
  18.     } while (a < 1000);
  19.     return 0;
  20. }
复制代码

代码修改解释如下:

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

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

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 03:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表