int a,b,c,s;
s = 100*a + 10*b + c; // a,b,c 未初始化!s 為垃圾值
for (a=1; a<10; a++)
for (b=0; b<10; b++)
for (c=0; c<10; c++)
if (s == a*a*a + b*b*b + c*c*c) // s 永遠不等於當前組合
printf("%d\n", s);
根因:s 在循環 **外部** 計算一次,且 a,b,c 未初始化,循環內 a,b,c 變化不影響 s。
#include <stdio.h>
int main() {
for (int a = 1; a < 10; a++) {
for (int b = 0; b < 10; b++) {
for (int c = 0; c < 10; c++) {
int n = 100*a + 10*b + c; // 循環內計算,反映當前數字
int sum = a*a*a + b*b*b + c*c*c;
if (n == sum) printf("%d\n", n);
}
}
}
return 0;
}
153
370
371
407
int is_narcissistic(int n) {
int orig = n, sum = 0, digits = 0;
int temp = n;
while (temp) { digits++; temp /= 10; }
temp = n;
while (temp) {
int d = temp % 10;
int p = 1;
for (int i = 0; i < digits; i++) p *= d;
sum += p;
temp /= 10;
}
return sum == orig;
}
int a=0, b=0, c=0, s=0;。