#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