原题链接:[编程入门]水仙花数判断
知识基础:
for(表达式1;表达式2;表达式3){若干语句}//for循环语句及其格式
思路:水仙花数为三位数,所以循环从100开始,到999结束,i为int型变量,所以i/100的值也是一个int型变量(整数)(注:C语言的取整不是四舍五入,是直接舍去小数),i/100就是百位上的数,i和100求余就是剩下的两位数,i%100之后再除以10同理会得到十位上的数,原数字再和10求余就是个位上的数
答案
#include<stdio.h>
int main(){
int i;
for(i=100;i<=999;i++){
if(i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10))
printf("%d\n",i);
}
return 0;
}注:程序结束return 0;不可省。
0.0分
69 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <stdio.h> void main() { int a,j,m,i,t; for(a=100;a<=999;a++) { t=a; m=0; for(i=1;i<=3;i++) { j=t%10; m=m+j*j*j; t=t/10; } if(a==m) printf("%d是一个水仙花数\n",a); } }#include <stdio.h> int main() { int x; int a,b,c; for(x=100;x<1000;x++){ a = x/100; b = x/10 - a*10; c = x%10; if( a*a*a+b*b*b+c*c*c == x ){ printf("%d ",x); } } return 0; }#include <stdio.h> int main() { int a=0,n,i=1,b,maxsize=10000,s=0,t=1; int x[maxsize]; while (t++) { b=t; n=t; while (i<=n) { x[a]=n%10; s=s+(x[a]*x[a]*x[a]); n=(n-x[a])/10; a++; } if(s==b){ printf("%d\n",b); } s=0;a=0; } return 0; } 为啥我程序这样写也只能输出1000以内的四个水仙数啊?更大的为什么输出不了呢#include <stdio.h> int main () { int i,a,b,c,t; for(i = 100; i<1000; ++i) { a=i/100; b=i%100/10; c=i%10; if((a*a*a)+(b*b*b)+(c*c*c)==i) printf("%d\n", i); } return 0; } 这道题很舒服这道题玩起来就很开心 可以这样 #include<bits/stdc++.h> using namespace std; int main() { int a,b,c,d; for(int i=100;i<=999;i++) { a=i/100; b=i%100/10; c=i%10; d=(a*a*a)+(b*b*b)+(c*c*c); if(i==d) cout<<i<<endl; } return 0; } 也可以这样 #include<bits/stdc++.h> using namespace std; int main() { cout<<153<<endl; cout<<370<<endl; cout<<371<<endl; cout<<407<<endl; return 0; } 再不行你就这样? #include<bits/stdc++.h> using namespace std; int main() { for(int i=100;i<=999;i++) { if(i==(pow(i/100,3)+pow(i%100/10,3)+pow(i%10,3))) cout<<i<<endl; } return 0; }