题目
以下程序的功能是求3位数中的水仙花数,a、b、c分别是个位、十位、百位,[填空1] 应填()。 #include< stdio.h > int main(void) ( int a, b, c, i; for(i=100;i< 1000;i++) { a = [填空1] ; b = [填空2] ; c = [填空3] ; if([填空4]) printf("%dn", i); ) return 0; } A. i/100B. i%10/10C. i%100D. i % 10
以下程序的功能是求3位数中的水仙花数,a、b、c分别是个位、十位、百位,[填空1] 应填()。
#include< stdio.h >
int main(void)
{
int a, b, c, i;
for(i=100;i< 1000;i++)
{
a = [填空1] ;
b = [填空2] ;
c = [填空3] ;
if([填空4])
printf("%d\n", i);
}
return 0;
}
- A. i/100
- B. i%10/10
- C. i%100
- D. i % 10
题目解答
答案
根据题意,三位数 $i$ 的各位数字可分解为:
- 百位 $a = i / 100$(选项 A)。
- 十位 $b = i / 10 \% 10$(选项 B)。
- 个位 $c = i \% 10$(选项 D)。
判断条件为 $a^3 + b^3 + c^3 == i$。
因此,[填空1] 应填 $i / 100$,即选项 A。
答案:A. i / 100
解析
水仙花数是指一个三位数,其各位数字的立方和等于它本身。本题需要通过程序实现遍历所有三位数(100到999),判断并输出符合条件的水仙花数。
关键知识点:
- 三位数分解:对于三位数
i,百位、十位、个位的提取方法。- 百位:
i / 100(整除100直接得到百位数字)。 - 十位:
(i % 100) / 10(先取后两位,再除以10)。 - 个位:
i % 10(直接取余10)。
- 百位:
- 判断条件:
a³ + b³ + c³ == i。
破题关键:
- 填空1对应百位数字的提取,需选择能正确计算
i的百位的表达式。
填空1分析
题目要求提取三位数i的百位数字。
- 选项A:
i / 100
例如:i = 365时,365 / 100 = 3,正确提取百位数字。 - 其他选项:
- B选项
i % 10 / 10:先取余10会丢失百位信息。 - C选项
i % 100:仅保留后两位。 - D选项
i % 10:仅提取个位。
- B选项
因此,填空1应选A。