5乐学作业反思

寻找阿姆斯特朗数问题

1,问题描述:

请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。

例如:407=4×4×4+0×0×0+7×7×7。所以407就是一个特殊数。

输入:位数

输出:该位数内的阿姆斯特朗数,若没有则输出No output!

2,思路梳理:

  1.  循环表示10的n到10的n+1之间的所有数
  2. 对每一个数,将其按位分开(难点)
  3. 对每一个数的每一位,分别立方求和(容易出错)
  4. 输出结果

3,逐一分析

      1.可以用循环表示

法一:int num=1;//负责记录数据的变量(简称计数变量)必须规定初始值

        for(i=0;i<n;i++)
             {
                     num*=10;
                   }

法二:直接用幂函数

        #include <stdio.h>
       #include <math.h>
int main ()
{
    int n,m,i,j,num=1;
    scanf("%d",&n);
    num=pow(10,n);
    printf("%d",num);//幂函数不能直接使用在输出函数之中
    return 0;
}

2.  析取位数

 for(i=num/10;i<num;i++)
    {
        sub=i;//为了顺序遍历每一个数,必须用sub代替i进行运算
        for(j=0;j<n;j++)
        {
            result=sub%10;//求余
            sub/=10;//抹去尾数
            sum+=pow(result,3);
        }
        if(sum==i)
        {
            printf("%d\n",i);
            flag=1;//况用来应对没有输出结果的情况
        }
        sum=0;//单次循环计数时,要留心sum在循环末尾要清零
    }
    if(flag==0)
    {
        printf("No output!");
    }

3,输出结果 注意换行符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值