c语言:Armstrong数

该程序用于找出三位Armstrong数并按序号排序。当输入一个序号时,程序会判断该序号是否超过Armstrong数的总数,如果超过则输出0,否则输出对应序号的Armstrong数。在100到999的范围内有4个Armstrong数:153,370,371,407。

题目描述:在三位的整数中,例如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了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值