「学点C语言系列」01 求阿姆斯特朗数

写在前面:「学点C语言系列」是新开的专栏,博主电子信息工程专业毕业后,从事了4年硬件工程师,最近一次接触C语言还是4年前的毕设,想重新系统的学习一下C语言,从最基本的Hello World开始。

1. 问题描述

阿姆斯特朗数就是通常我们说的水仙花数,指一个三位数,个位的立方加上十位的立方再加上百位的立方等于这个数本身,如153=13+53+33153=1^3+5^3+3^3

2. 解题思路

  1. 确定是一个三位数,范围100~999,可采用for循环
for(i=100; i<1000; i++)
{
   
}
  1. 求出个位、十位、百位,依次定义变量名g、s、b
b = i / 100;     // 整除100得百位数
s = i / 10 % 10; // 整除10再除以10求余数得十位数
g = i % 10;      // 除以10求余数得个位数
  1. if判断,相等输出当前的i,不相等i+1继续执行;
for(i=100; i<1000; i++)
{
   if(i == b*b*b + s*s*s + g*g*g)
}
printf("%d  ", i);  

3. 代码实现

/*
文件名:amstl.c
作者:记得诚
问题:求阿姆斯特朗数
*/
#include <stdio.h>
int main()
{
    int b, s, g, i;  
    printf("阿姆斯特朗数有:");
    for( i=100; i<1000; i++ )  //三位整数取值范围
    {
        b = i / 100;          //百位数
        s = s = i / 10 % 10;  //十位数
        g = i % 10;           //个位数
        if(i == b*b*b + s*s*s + g*g*g)  //判断各位立方和是否与原数相等
        printf("%d  ", i);  
    }
    printf("\n");  //换行
    return 0;
}

编译结果,阿姆斯特朗数有四个:153 370 371 407

阿姆斯特朗数有:153  370  371  407
请按任意键继续. . .

4. 延伸一下

判断一个数是不是阿姆斯特朗数。

/*
文件名:PDamstl.c
作者:记得诚
问题:判断一个数是不是阿姆斯特朗数
*/
#include<stdio.h>
void main()
{
	int b, s, g, i, j;
	printf("请输入一个三位数:");
	scanf("%d", &i);
	b = i / 100;          //百位数
	s = i / 10 % 10;      //十位数
	g = i % 10;           //个位数
	j = b*b*b + s*s*s + g*g*g;
	if (i == j)
		printf("YES");
	else
		printf("NO");
	printf("\n");  //换行
}

输入145,返回NO

请输入一个三位数:145
NO
请按任意键继续. . .

输入153,返回YES

请输入一个三位数:153
YES
请按任意键继续. . .

永远相信美好的事情即将发生!作者记得诚,写于安徽合肥,时间2020-03-30 PM00:00

记得诚 CSDN认证博客专家 电子爱好者 原创洁癖患者
微信搜索【记得诚电子设计】,第一时间阅读原创干货文章,一位硬件工程师的原创分享,涵盖电路设计、PCB设计、电子元器件、电子电路和硬件科普等内容,涉及无线通信、嵌入式、物联网、GNSS定位和车载等领域。
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值