C题(四)水仙花数
场景:
水仙花数是指一个三位数,它的每个数位上的数字的立方和等于它本身。
例如,153就是一个水仙花数,因为1³ + 5³+ 3³ = 1 + 125 + 27 = 153。
答案之一展示:👉
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
for (i = 100; i < 1000; i++)
{
int sum = 0;
int tmp = i;
while (tmp > 0)
{
int t = (tmp % 10);
tmp /= 10;
int r = 1;
int j = 0;
for (j = 0; j < 3; j++)
{
r *= t;
}
sum += r;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
运行结果:👉
153 370 371 407
仅限个人感受:这道题虽然逻辑不是特别复杂,但是坑点较多。
👉👉👉强烈建议大家思考以下几个问题:
1、为什么变量sum要在for循环的内部创建,而不可以在for循环外部创建?
2、为什么变量 r 要在while循环的内部创建,而不可以在while循环外部创建?
3、为什么要引入 tmp来接受 i 的值?
小插一嘴:第三点让我想起了我之前在推文里写过的“循环体内部要留意是否能够改动循环变量”,
对于本代码中的for循环,控制循环的变量即为 i 。
希望对大家在关于变量的创建的理解上有帮助。