一、问题描述

阿姆斯特朗数:如果一个整数等于其各位数字立方和,,则称该数为阿姆斯特朗数也称自恋数。如:407=4×4×4 + 7×7×7。求1000内所有的阿姆斯特朗数。

二、设计思路

① 分离出个位数,算术表达式为:j=i%10。

② 分离出十位数,算术表达式为:k=i/10%10。

③ 分离出百位数,算术表达式为:n=i/100。

④ 判断条件是否成立。若是,执行步骤 ⑤;若不是,执行步骤 ⑥。

⑤ 打印输出结果。

⑥ i 自增 1。

⑦ 转到 ① 执行,直到 i 等于 1000。

其判断的条件为:j*j*j+k*k*k+n*n*n==i。

三 、程序流程图

四、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
main()
{
int i,k,t,a[3]={0};
printf("There are fo;;owing Armstrong number smaller than 1000:\n");
for(i=2;i<1000;i++)
{
t=0;
k=i;
while(k)
{
a[t]=k%10;
k=k/10;
t++;
}
if(i==a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2])
primtf("%d   ",i);
}
printf("\n");
}