为什么只有371输不出

#include #include int main(){ int i,j=0,a,b,c,d,q; for(i=100;i<=999;i++){ a=i/100;b=i/10%10;c=i%10;d=pow(a,3)+pow(b,3)+pow(c,3); if(a!=b!=c&&a!=c&&i==d){ q=i;j++;printf( "%d\n",q);}} printf("%d",j); return 0;}

你这个是在做水仙花数编程把, if(a!=b!=c&&a!=c&&i==d) 改成 if(a!=b&&b!=c&&a!=c&&i==d)

#include <stdio.h>

void main(){
	/* 
	求出所有的水仙花树
	  求出所有的水仙花树,水仙花数为3位数,每一位的三次方的和等于它自己
	 */
	 int i;
	 int a,b,c;
	 for(i=100;i<=999;i++){
	 	a = i / 100; //百位
		b = i / 10 % 10; //十位
		c = i % 10;//个位
		
		if(a*a*a + b*b*b + c*c*c == i){
			printf("%d\t",i);
		} 
		 
	 }
} 

 

因为你这个写的有点问题,你写的 a!=b!=c,其实真实的效果是 (a!=b)!=c,所以必须要改成 a!=b && a!=c

你这个是在做水仙花数编程把, if(a!=b!=c&&a!=c&&i==d) 改成 if(a!=b&&b!=c&&a!=c&&i==d)

修改如下,问题见注释,供参考:

#include<stdio.h>
#include<math.h>
int main()
{
    int i,j=0,a,b,c,d,q;
    for(i=100;i<=999;i++)
    {
        a=i/100;
        b=i/10%10;
        c=i%10;
        d=pow(a,3)+pow(b,3)+pow(c,3);
        if(i==d)  // if(a!=b!=c&&a!=c&&i==d)这里判断多余
        {
                  //q=i;
           j++;
           printf( "%d\n",i);//printf( "%d\n",q);
        }
    }
    printf("%d\n",j);
    
    return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632