湖畔读书人


私信TA

用户名:2814787590

访问量:128242

签 名:

等  级
排  名 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()
{
    // 打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。
    // 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。
    int a[3]={0};
    int n,i,j,b;
    for( n=100;n<1000;n++){
        for(i=0;i<3;i++){
			b=n;
            a[i]=b%10;
            printf("%d \n",a[i]);
            b=b/10;
            printf("%d ",b);
            
            
        }
        printf("%d ",a[i]);
        for( j=0;j<2;j++){
            a[j]*=a[j];
        }
        if(n==a[0]+a[1]+a[2])
        	printf("%d\n",n);
    }
    return 0;
}
为什么不行?
2021-03-17 23:45:08
#include<stdio.h>
int main()
{
	int a,b,c,i;
	for(i=100;i<=999;i++)
	{
		a=i/100;
		b=(i-a*100)/10;
		c=i-a*100-b*10;
		if(i=a*a*a+b*b*b+c*c*c)
			printf("%d\n",i);
	}
	return 0;
}
为什么判断的时候i放到前面就会错呢?
2020-05-07 11:40:59
#include<stdio.h>
int main()
{
	int a,b,c,i;
	do
	{
		a = i / 100;
        b = i / 10 % 10;
        c = i % 10;
	    a*a*a + b*b*b + c*c*c == i;
	}while(i=100,i<1000,i++);
	printf("\n");
	return 0;
}
哪位帮我看看,为什么运行不出结果啊
2020-03-18 17:05:42
这个也可以
#include<stdio.h>
#include<math.h>
int main()
{
	int num,n;
	int c1,c2,c3,c4;
	for(num=100;num<1000;num++)
	{
		c1=num%10;//个位 
		c2=(num%100-c1)/10;//十位 
		c3=num/100;//百位 
		n=c1*c1*c1+c2*c2*c2+c3*c3*c3;
		if(num==n)
		printf("%d\n",num);
			}
			return 0;
}
2020-02-20 11:42:51
谢谢,学到了
2019-10-13 15:49:35
#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的所有数......
2019-10-10 19:36:02
#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;

}
写了个多重循环 一点点往上数的
2019-08-18 20:53:36
#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;
}
2019-08-10 17:14:52