ZKX's LAB

输入一个正整数n(3≤n≤7),输出所有的n位水仙花数 从小到大输出所有n位的水仙花数

2020-07-26知识8

输出水仙花数。输入一个正整数n(3≤n≤7),输出所有的n位水仙花数,试 #includelong calc(long num,long count){if(num=0){return 0;}else if(count=0){return 1;}else{return num*calc(num,count-1);}}void main(){long i,n,numA,numB,numC,numD,numE,numF,numG;printf(\"请输入n的值:\");scanf(\"%d\",&n);while(n|n>;7){if(n>;=3&n){break;}printf(\"请输入一个大于等于3或小于等于7的数!\\n\");printf(\"\\n\");printf(\"请输入n的值:\");scanf(\"%d\",&n);}if(n=3){printf(\"1000以内的水仙花数有:\");for(i=100;i;i+){numA=i/100;numB=i%100/10;numC=i%100%10;if(i=calc(numA,3)+calc(numB,3)+calc(numC,3)){printf(\"%ld\",i);}}printf(\"\\n\");}else if(n=4){printf(\"10000以内的水仙花数有:\");for(i=1000;i;i+){numA=i/1000;numB=i%1000/100;numC=i%1000%100/10;numD=i%1000%100%10;if(i=calc(numA,3)+calc(numB,3)+calc(numC,3)+calc(numD,3)){printf(\"%ld\",i);}}printf(\"\\n\");}else if(n=5){printf(\"10000以内的水仙花数有:\");for(i=10000;i;i+){numA=i/10000;numB=i%10000/1000;numC=i%1000%1000/100;numD=i%1000%1000%100/10;numE=i%1000%1000%100%10;if(i=calc(numA,3)+calc(numB,3)+calc(numC,3)+calc(numD,3)+。C语言: 输出所有的“水仙花数” C语言:输出所有的“水仙花数”,C语言:输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其中各位数字立方和等于该数字本身。例如:153是一个“水仙花数”,因为。c语言 输出所有水仙花数 在第一个for循环前面给2113s赋值时,5261a、b、c的值没有初始化,所以整个s=100*a+10*b+c是不确定的4102值,程序运行便1653会出错!建议修改:将语句s=100*a+10*b+c放到条件语句if(s=(a*a*a+b*b*b+c*c*c))之前,这样s得到的是确定值,程序运行正常。修改后源程序如下:include\"Stdio.hvoid main(){int a,b,c,s;for(a=1;a;a+){for(b=0;b;b+){for(c=0;c;c++){s=100*a+10*b+c;if(s=(a*a*a+b*b*b+c*c*c))printf(\"%d\\n\",s);}}}getchar();}程序运行结果见插图。

#水仙花数#printf#c语言

随机阅读

qrcode
访问手机版