- 综合讨论区
- 帖子详情
水仙花
China-小方格
发表于2019年07月20日
<p>我认为写程序的时候为了让你们自己后续能看懂还是要在后面写备注,别以后稍微复杂点的就看不懂了</p><p># include <stdio.h></p><p>int main()</p><p>{</p><p> /*水仙花数是指一个N位的正整数(N >= 3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 1 3 + 5 3 + 3 3*/</p><p> int n = 3;</p><p> //输入这个n位数 </p><p>// scanf("%d",&n);</p><p> int first = 1;</p><p> int i = 1;</p><p><br ></p><p> while(i < n){</p><p> first *= 10; //先算出N位数的第一个数字,如N=3,则第一位为100; </p><p> i ++; //看一共循环了多少次 </p><p> }</p><p> printf("first = %d,i = %d;\n",first,i); //输出查看变量值 </p><p> </p><p> i = first;</p><p> while(i < first * 10){ // 便利100-999</p><p> int t = i;</p><p> int sum = 0; //用于存放 N位数 的 每位数的N次方 相加的结果 </p><p> </p><p> do{</p><p> int d = t%10; //分解每一个整数 i 的每个位数 </p><p> t /= 10;</p><p> int p = 1;</p><p> int j = 0;</p><p> while(j < n){</p><p> p *= d; //通过循环算出 分解出的i每个位数 的 N次幂结果 </p><p> j ++;</p><p> }</p><p> sum += p; //每个个位数的N次幂相加和 </p><p> }while(t > 0);</p><p><br ></p><p> if(sum == i){</p><p> printf("%d\n",i); //每个位上的n次幂之和等于i则输出这个数 </p><p> }</p><p> i ++; </p><p> }</p><p> </p><p> return 0;</p><p>}</p><p><br ></p>
3
回复