num==100a+10b+c这样的方式为什么不对各位小伙伴解答一下
不知道你这个问题是否已经解决, 如果还没有解决的话:问题的关键在于了解C++中的数据类型和运算规则。在C++中,做乘法运算时,运算符*两侧的操作数必须是数字类型。而在条件 num == 100a + 10b + c 中,a、b、c是变量,不是数字类型,所以会导致编译错误。
为了解决这个问题,你可以将条件 num == 100a + 10b + c 改写为 num == (100 * a) + (10 * b) + c。这样,a、b、c就不再是变量了,而是数字类型的操作数,可以进行乘法运算。
下面是代码示例:
#include<iostream>
using namespace std;
int main() {
// 1. 打印所有三位数
int num = 100;
do {
// 2. 判断水仙花数
int a = 0, b = 0, c = 0; // 代表个位、十位、百位
a = num % 10; // 获取个位
b = num / 10 % 10; // 获取十位
c = num / 100 % 10; // 获取百位
if (a * a * a + b * b * b + c * c * c == num) {
cout << num << endl;
}
num++;
} while (num < 1000);
system("pause");
return 0;
}
运行以上代码,就可以输出所有的水仙花数。
水仙花判断条件不对
应该是
if (num == a * a *a + b * b * b + c * c * c)
...
num == a * a * a + b * b * b + c * c * c
水仙花数是n = a^3+b^3+c^3,写成代码就是num == a*a*a + b*b*b + c*c*c。