鱼C论坛

 找回密码
 立即注册
查看: 1345|回复: 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
你的代码存在一些错误和逻辑问题。在下面是我对你的代码进行的一些修改和解释。
#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. 在循环体内部,需要更新变量bcd的值,以保证每次循环都计算下一个数的个位、十位和百位数字。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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. 在循环体内部,需要更新变量bcd的值,以保证每次循环都计算下一个数的个位、十位和百位数字。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 10:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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