ZKX's LAB

用C++ 现在要求输出所有在m和n范围内的水仙花数。 m和n范围内的水仙花数的个数

2020-07-20知识15

“水仙花数”的问题升级版,现在要求所有在m和n范围内的水仙花数的个数,边界m和n也考虑在内。 请问是个数(比如输入100 200,输出1),还是本身数(比如输入100 200,输出153)。这是本身数includeusing namespace std;int main(){int x,y,a,b,c;cin>;>;x>;>;y;while(x){a=x/100;b=x/10%10;c=x%10;if(a*a*a+b*b*b+c*c*c=x)cout;x+;}return 0;}这是个数:includeusing namespace std;int main(){int x,y,a,b,c,n=0;cin>;>;x>;>;y;while(x){a=x/100;b=x/10%10;c=x%10;if(a*a*a+b*b*b+c*c*c=x)n+;x+;}cout;return 0;}要求输出所有在m和n范围内的水仙花数(100<=m<=n<=999如果给定的范围内不存在水仙花数,则输出no #includeusing namespace std;int main(){int x,m,n,a,b,c,d,e;cin>;>;m>;>;n;if(m>;=100&n){/没有人给你说过,如果后面跟多条语句,一定要用括号括起来吗?括起来的意义在于,如果条件成立,会执行括号中的这一堆语句,否则没有括号时,表示,如果条件成立,只能执行离if语句最近的一条语句,另:C语言的一条语句的判定以分号为结束标志。(暂且先这样认为着,特殊情况自己慢慢去体会)int cnt=0;for(x=m;x;x+){/同上a=x%10;b=x/10;c=b%10;d=b/10;e=a*a*a+d*d*d+c*c*c;if(x=e){cnt+;cout;}}if(cnt=0)cout;cout;}return 0;}程序填空:求100-999之间的水仙花数 说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身 #includeint main(){int a,b,c,i;printf(\"水仙复花数为:\\n\");for(i=100;i;i+){a=i/100;b=i%100/10;c=i%100%10;if(i=a*a*a+b*b*b+c*c*c)printf(\"%d\\n\",i);}}扩展资料水仙花数制又称阿姆斯特朗数常见的水百仙花数三位的度水仙花数共有4个:问答153,370,371,407;四位的四叶玫瑰数共有3个:1634,8208,9474;五位的五角星数共有3个:54748,92727,93084;六位的六合数只有1个:548834;七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;八位的八仙数共有3个:24678050,24678051,88593477参考资料来源::水仙花数用C++ 现在要求输出所有在m和n范围内的水仙花数。 如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;如果给定的范围内不存在水仙花数,则输出no;输出格式有要求,注意如果存在,最后不要多一个空格再给一份通过的123456789101112131415161718192021222324252627282930313233343536373839404142#include<;cstdio>;bool flag[1000];int main(){ int sum=100;初始化 for(int i=1;i;i+){ for(int j=0;j;j+){ for(int k=0;k;k+){ if(sum=(i*i*i+j*j*j+k*k*k)){ flag[sum]=true;} sum+;} } } int m,n;while(scanf(\"%d%d\",&m,&n)=2){ int i=m;for;i;i+){ if(flag[i]){ printf(\"%d\",i);break;} } if(i=n+1){/没找到 printf(\"no\\n\");}else{ i+;for;i;i+){ if(flag[i]){ printf(\"%d\",i);} } printf(\"\\n\");} } return 0;}求水仙花数, 输入两个数m,n在100~999之间,m #includeint main(){int m,n,t,i,a,b,c,flat,x,y;while(scanf(\"%d%d\",&m,&n)){if(m|n>;999)break;第一,第二个if交换一下即可if(m>;n){t=m;m=n;n=t;}x=m;y=n;m=m-1;flat=0;for(i=1;i(y-x+1);i+){c=m%10;b=((m-c)/10)%10;a=(m-c-10*b)/100;if(m=(a*a*a+b*b*b+c*c*c))printf(\"%d\",m);if(m=(a*a*a+b*b*b+c*c*c))flat=1;m=m+1;}if(flat=0)printf(\"no\\n\");}return 0;}你试试,应该可以了。输入2个正整数m和n,输出m到n中所有水仙花数?用C语言怎么编 可以输入任意两个正整数includeint fun(int s,int c){if(c=0)return 1;return fun(s,c-1)*s;}int main(){printf(\"请一次输入两个正整数:\");int m,n,k,temp,sum=0;int str[10];scanf(\"%d%d\",&m,&n);m=m>;n?m:n;int i,count;int have=0;for(i=100;i;i+){count=0;temp=i;for(k=0;temp>;0;k+){str[k]=temp%10;temp=temp/10;count+;}for(k=0,sum=0;k;k+)sum+fun(str[k],count);if(sum=i){have=1;printf(\"%d\\n\",i);}}if(have=0)printf(\"该范围内没有水仙花数!\\n\");}C++求水仙花数 #includeusing namespace std;int main(){int m,n,s=0;cin>;>;m>;>;n;if(min(m,n)|max(m,n)>;999){return 1;输入错误}for(int i=min(m,n);i(m,n);i+){int a,b,c;a=i/100;b=(i%100)/10;c=(i%100)%10;if((a*a*a)+(b*b*b)+(c*c*c)=i)s+;}cout;return 0;}你的循环里面i=100开始计算,如果你输入的m和n都大于100,则循环就跳不进去了,所以i应该是从m和n的这两个小的开始,大的结束;在书写表达式的时候最好加上括号,如取余和除法运算的,避免记错了运算顺序导致计算结果异常;

随机阅读

qrcode
访问手机版