“水仙花数”:是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^ 3 + 5^ 3 + 3^ 3 = 153)
来看一段求 “水仙花数” 的程序:
**在循环外部定义变量**
int main()
{
int i = 0;
int count = 1;
int sum = 0;
int tmp = i;
for(i=0; i<=999999; i++)
{
//判断i是否为水仙花数
//1、判断位数
while (tmp/10)
{
count++;
tmp /= 10;
}
//2、计算每一位的次方和
tmp = i;
while(tmp)
{
sum += pow(tmp%10, count);
tmp /= 10;
}
//3、判断
if (sum == i)
printf("%d ", i);
}
system("pause");
return 0;
}
输出结果错误。
在循环外部定义变量:
int main()
{
int i = 0;
for(i=0; i<=999999; i++)
{
//判断i是否为水仙花数
//1、判断位数
int count = 1;
int sum = 0;
int tmp = i;
while (tmp/10)
{
count++;
tmp /= 10;
}
//2、计算每一位的次方和
tmp = i;
while(tmp)
{
sum += pow(tmp%10, count);
tmp /= 10;
}
//3、判断
if (sum == i)
printf("%d ", i);
}
system("pause");
return 0;
}
输出结果正确。
放在循环外部就是初值,这个变量只会被赋值一次,而如果放在内部的话,每循环一次,就重新初始化一次,也就是说每次循环都对这个变量重新赋值了 。