#include<stdio.h> #define MAX 255 void main() { int i,j,t,k,m,a[MAX]; long n; clrscr(); puts(" This program will find the Armstrong number.\n"); printf(" >> Please input the range you want to find (2~n):\n >> "); scanf("%ld",&n); m=n; j=10; while(m>=10) { m=m/10; j*=10; } printf(" >> There are follwing Armstrong number smaller than %d:\n",n); for(i=2;i<n;i++) /*穷举要判定的数i的取值范围2~1000*/ { for(t=0,k=10;k<=j;t++) /*截取整数i的各位(从高向低位)*/ { a[t]=(i%k)/(k/10); /*分别赋于a[0]~a[2}*/ k*=10; } for(m=0,t--;t>=0;t--) m+=a[t]*a[t]*a[t]; if(m==i) /*判断i是否为阿姆斯特朗数*/ printf("%5d",i); /*若满足条件,则输出*/ } printf("\n Press any key to quit...\n"); getch(); }