题目描述:在三位的整数中,例如153可以满足1^3 + 5^3 + 3^3 = 153,这样的数称之为Armstrong数。将所有的Armstrong数按小到大排序,试写出一程序找出指定序号的三位Armstrong数。
输入:输入包括若干行,每行输入一个序号。输入序号为0时,结束输入。
输出:输出相应序号的Armstrong数,如果输入的序号大于Armstrong数个数,输出0。
解题的代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int n;
int num[10];
while((scanf("%d",&n))&&n!=0)
{
int item=0;
for(int i=100;i<1000;i++)
{
int a=i%10;//取个位
int b=(i/10)%10;//取十位
int c=(i/100)%10;//取百位
if(pow(a,3)+pow(b,3)+pow(c,3)==i)
{
num[item]=i;//将Armstrong数按照序号一个个的存入数组中
item++;
}
}
if(n>item)
{
printf("0\n");//序号大于Armstrong数的个数
}else
{
printf("%d\n",num[n-1]);//输出对应序号的Armstrong数
}
}
return 0;
}解题思路:首先明白题目的意思,难点在于输出相应序号的Armstrong数,如果输入的序号大于Armstrong数个数,输出0的这句话。比如从100到999之间一共有153,370,371,407一共四个
Armstrong数,所以对应的序号为1,2,3,4,所以到了序号5,输出都为0了。
该程序用于找出三位Armstrong数并按序号排序。当输入一个序号时,程序会判断该序号是否超过Armstrong数的总数,如果超过则输出0,否则输出对应序号的Armstrong数。在100到999的范围内有4个Armstrong数:153,370,371,407。

1539

被折叠的 条评论
为什么被折叠?



