解题思路:


题目中的条件水仙花数是三位数,所以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;
}


点赞(29)
 

0.0分

55 人评分

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

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

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

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

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

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

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

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

评论列表 共有 64 条评论

smy19 5年前 回复TA
#include<stdio.h>
int main()
{
	int a,b,c,num;
	for(num=100;num<1000;num++){
		a=num/100;
		b=(num-100*a)/10;
		c=num-100*a-10*b;
		if( a*a*a+b*b*b+c*c*c==num)
		  printf("%d\n",num);
	}
	return 0;
 } 
请问一下这样求abc有问题吗?为什么运行是从100到999的所有数......
90度微笑 5年前 回复TA
#include <stdio.h>
#include <math.h>
int main()
{   int a=100,b=0,i=0;

 for(a=100;a<1000;a=a+100)
 {
    for(b=0;b<=100;b=b+10)
    {
	     for(i=0;i<10;i++)
         {
	        if(a+b+i == pow((a/100),3)+pow((b/10),3)+pow(i,3))
	         {
			 printf("%d\n",a+b+i);
	        }
		 }
	     
	     i=0;   //数到10归零
    }
    b=0; //数到100归零
}
 

	
	
		return 0;

}
写了个多重循环 一点点往上数的
小雨 5年前 回复TA
#include<stdio.h>
#include<math.h>

int main()
{
    int x;
    int n;
    for(x=100;x<1000;x++)
    {
        n=pow((x%10),3)+pow(x/100,3)+pow(x%100/10,3);
        if(n==x)
            printf("%d\n",x);
    }
    return 0;
}
tanwee 5年前 回复TA
#include <stdio.h>

int main()
{
	int n,k,d,sum=0;//k暂时储存数据 d各位上的数据 
	 
	for(n=100;n<=999;n++){
		n=k;
		while(n){
			d=n%10;
			n/=10;
			sum+=d*d*d;
		}
		if(k==sum)
		{
			printf("%d\n",k);
		}
		sum=0;
	}
	return 0;
 } 
请问我这个 为什么会输出超限
Yp 5年前 回复TA
三位数没说明是正数还是负数啊,负数应该也是成立的才对啊
Strider 5年前 回复TA
这题判定有问题,从100往上算是对的,从999往下算判错,有兴趣可以试试
一叶知秋 5年前 回复TA
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
  int a,b,c;
  int i=0;
  for(a=1;a<10;a++){
    for(b=0;b<10;b++){
      for(c=0;c<10;c++){
        if(a*100+b*10+c == a*a*a+b*b*b+c*c*c){
          printf("%d\n",a*100+b*10+c);
        }
      }
    }
  }
  return 0;
}
1810819101 5年前 回复TA
@Lkdna 一语惊醒梦中人
RickDong 6年前 回复TA
@我家的红烧肉 printf("%d",i);改为printf("%d ",i); 输出就隔开了
RickDong 6年前 回复TA
#include<stdio.h>

int main(void)
{
    int i;
    int a,b,c;
    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);
    }
    return (0);
}