#include<iostream>
using namespace std;
int main() {
int num = 100;
do {
int a = 0;
int b = 0;
int c = 0;
a = num % 10;
b = num / 10 % 10;
c = num / 100;
if (a*a*a + b*b*b + c*c*c == num) { cout << num << endl; }num++;
cout << num << endl; num++; //为什么这样就输出奇数了??去掉这一行就正常输出水仙花数
} while (num < 1000);
system("pause");
return 0;
}
#include<iostream>
using namespace std;
int main() {
int num = 100; //创建整形变量num并初始化num=100
do { //进入循环
int a = 0; //创建整形变量a并初始化a=0
int b = 0; //创建整形变量b并初始化b=0
int c = 0; //创建整形变量c并初始化c=0
a = num % 10; //a等于num除以10后得到的余数
b = num / 10 % 10; //b等于num除以10后再除以10后得到的余数(因为是整形运算,第一次除以10后取整数再除以10)
c = num / 100; //c等于num除以100(因为是整形运算,除以100后取整数)
if (a*a*a + b*b*b + c*c*c == num) //判断是否是水仙花数
{
cout << num << endl; //输出num的值
}
num++; //num的值+1
cout << num << endl; //输出num的值
num++; //num的值+1
} while (num < 1000); //判断是否继续循环
system("pause"); //暂停
return 0; //结束
}
输出水仙花数很明显有一个if的判断,看数是不是水仙花数,是的话输出值。
输出奇数是因为除了第一次,每次输出前都有两次num++;,而num刚开始是100,经过第一次变成奇数,所以每次输出是奇数。
在100到1000里的水仙花数有4个,程序这样应该输出只有一水仙花数吧。
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html