解题思路:


题目中的条件水仙花数是三位数,所以for()循环的时候i从100到999就好;


定义三个数a,b,c,分别放这个三位数的百位,十位,个位;


再用一个if语句判断a^3+b^3+c^3是否等于i,如果等于,输入i就好;

注意事项:


三位数各位的求法:

        1、个位,直接对10取余;

        2、十位,先对10取整得到十位和百的数,此时是一个两位数,再对10取余就得到十位;

        3、百位,直接对100取整即可。


参考代码:


#include<stdio.h>
int main()
{
	int a,b,c,i;
	for(i=100; i<1000; i++){
		a = i / 100;
		b = i / 10 % 10;
		c = i % 10;
		if(a*a*a + b*b*b + c*c*c == i)
			printf("%d ",i);
	}
	printf("\n");
	return 0;
}


点赞(31)
 

0.0分

55 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 64 条评论

白色枫叶 3年前 回复TA
@白色枫叶 @H2030818039 这个我是按顺序来的a=d%10是把d的个位取出来,之后d=d/10是把各位去掉,比如153我把它变成15,一次类推,最后c取的是百位上的数(这代码太垃圾了,隔了十几天差点自己都没看懂XD)
鱼鱼要加油 3年前 回复TA
@白色枫叶 请问一下,for那里,d已经除了10,那c怎么求得个位呀
神陨 3年前 回复TA
写的比较复杂,不过我觉得还是蛮好懂的
#include<stdio.h>
int main()
{
	int a,b,c,sum;
	for(a=1;a<=9;a++)
	{
		for(b=0;b<=9;b++)
		{
			for(c=0;c<=9;c++)
			{
				if((a*100+b*10+c)==(a*a*a+b*b*b+c*c*c))
				{
					sum=a*100+b*10+c;
					printf("%d\n",sum);
				}
			}
		}
	}
	return 0;
 }
白色枫叶 3年前 回复TA
#include <stdio.h>

int main()
{
	int a=0,b=0,c=0,d=0;
	int i;
	for(i=100;i<=999;i++){
		d=i;
		a=d%10;
		d=d/10;
		b=d%10;
		c=d/10;
		if(a*a*a+b*b*b+c*c*c==i)
		{
			printf("%d\n",i);
		}
	}
} 
属于是对本题特攻了
mmmm 3年前 回复TA
return 0 前面那一句是不是多余了
小黄鸭 3年前 回复TA
@LBD西瓜泥 @2021xmy 谢啦
小黄鸭 3年前 回复TA
@LBD西瓜泥 @2021xmy 哦,好的
LBD西瓜泥 3年前 回复TA
@LBD西瓜泥 @girllijinxuan 我可以通过,可能被修复了。
小黄鸭 3年前 回复TA
@LBD西瓜泥 提交不过
CREEPER 3年前 回复TA
@LBD西瓜泥 牛啊牛啊