湖畔读书人


私信TA

用户名:2814787590

访问量:128241

签 名:

等  级
排  名 21
经  验 19793
参赛次数 0
文章发表 42
年  龄 0
在职情况 学生
学  校 武汉东湖学院
专  业

  自我简介:

解题思路:


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


 

0.0分

94 人评分

  评论区

#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;
 } 
请问我这个 为什么会输出超限
2019-04-22 23:42:50
三位数没说明是正数还是负数啊,负数应该也是成立的才对啊
2019-04-09 21:48:58
这题判定有问题,从100往上算是对的,从999往下算判错,有兴趣可以试试
2019-03-15 16:28:53
#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;
}
2019-02-27 01:26:01
#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);
}
2018-09-13 13:39:19
没错啊,你循环输出的时候加个空格区分一下
2018-07-17 14:16:19
#include<stdio.h>
int main()
{
   int i,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);
   }
   printf("\n");
    return 0;
}
为什么我这个显示答案错误阿??
2018-06-09 16:10:03