知识基础:
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分
109 人评分
这道题玩起来就很开心 可以这样 #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; }
Cauchy 2020-04-22 16:09:21 |
最后那个pow函数精度不高啊 一般都是自己写一个....
#include<stdio.h> int main() { int n; scanf("%d",&n); int i=1; int frist=1; while(i<n){ frist *=10; i++; } i=frist; while(i<frist*10){ int t=i; int sum=0; do{ int d=t%10; t/=10; int p=d; int j=1; while(j<n){ p *=d; j++; } sum +=p; }while(t>0); if(sum==i){ printf("%d\n",i); } i++; } return 0; }
#include <stdio.h> #include<math.h> int main() { for (int i = 100; i <= 999; i++) { if (i == (pow(i / 100, 3) + pow(i % 10, 3) + pow(i / 10 % 10, 3))) printf("%d\n", i); } return 0; }
【亲和数】 (C语言代码)浏览:588 |
WU-字符串比较 (C++代码)浏览:824 |
WU-输出九九乘法表 (C++代码)浏览:1852 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2121 |
核桃的数量 (C语言代码)浏览:726 |
Hello, world! (C语言代码)浏览:766 |
【亲和数】 (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
DNA (C语言代码)浏览:440 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:742 |
余烟 2020-11-25 20:15:42 |
因为你用的开头是void main而不是int main