数学建模社区-数学中国

标题: 谭浩强书上的课后习题水仙花数,求解 [打印本页]

作者: kill2345    时间: 2013-8-10 11:42
标题: 谭浩强书上的课后习题水仙花数,求解
本帖最后由 kill2345 于 2013-8-10 12:00 编辑 9 V* Y# v5 Q+ ?, P  L- k

1 C% `0 b  i# f9 B4 I' Q1 x自学c,正在看谭浩强的《C程序设计》,遇到一个题不会,请教
4 x" W+ ?, Y( j: [8 @0 v0 }& `+ A: j       输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为
% _: F% v0 w* j( ]2 p153=1[sup]3[/sup]+5[sup]3[/sup]+3[sup]3[/sup]。
作者: wangzheng3056    时间: 2013-8-10 11:59
赶快上来抢点体力!
作者: wangzheng3056    时间: 2013-8-10 12:00
楼主试试, 你可以任意输入n个数,只要不超出int型的范围就行了
  1. #include<stdio.h>
    , ]2 Z! P0 X, C
  2. int pow(int x,int y)
    1 y: E, y% g( }, I* J' {
  3. {
    8 {/ D" G7 a+ _/ \( W$ I. |, D
  4.     int num=1,i;4 R' N" s& W6 l3 x; E
  5.     for(i=0;i<y;i++)
    0 P; h! k% e5 S( h+ ]( z3 Q# u3 [
  6.     {2 b% `% \2 L* ?4 _0 r# j" ?
  7.         num *= x;
    5 j/ c9 P9 |) I- a5 I0 |
  8.     }0 y: G! ?( m# K) b
  9.     return num;   
    # x$ H7 h2 R. Y$ g- t# ]4 X/ ]
  10. }$ j) r4 `5 W4 H* N, [& t( x
  11. void main()& W. d; `! K5 |( f; e* e
  12. {' A! \/ a3 _7 e3 R3 z
  13.     int num,temp,i,count=1,number;
    . v1 l- a8 V: g. ^+ s
  14.     int temp1;! k; l( S2 y; t9 Y4 S) K$ J
  15.     scanf("%d",&num);
    & Y6 q; f# z. ^" N! O$ Y
  16.     number = num;. U3 ~" o( b- T) |7 K, k0 t
  17.     for(i = 10 ; num/i ; i*=10)//记录一下num的位数+ y$ F# z8 T6 k: @" U
  18.     {count++;}
    $ k# S5 Q, S! k2 N! F0 x- V
  19.     //将number所有位数分离
    + E# c# m% |1 S4 X
  20.     temp = pow(num%10,count); 1 S/ a5 b6 a& U% H1 C" c
  21.     for(i = count -1 ; i>0 ; i-- )
    9 |4 N- j- J" G5 r
  22.     {   
    ( O1 q+ p% ?# g) z3 N6 w0 |  y; B
  23.         temp1 = num / pow(10,i);
    + Q+ K( T* J, u  S
  24.         temp += pow(temp1,count);
    7 W5 `  j3 k9 ]& Q/ ?# R
  25.         num = num - pow(10,i)* (num / pow(10,i));' `) {$ C5 R# Y, Z7 L0 _* z9 i( z
  26.     }
    2 ~5 {4 q( ?# ]5 ^4 v1 ^7 C& B
  27.      if(temp == number)/ E3 k2 z# f2 g4 N2 a! M
  28.      printf("yes");
    : X4 t- B- a) I  w% F' l# d6 X
  29.      else
    ; Y/ W- U/ _; N
  30.      printf("no");5 p1 k, [. G' @3 q4 D7 Q3 i+ X6 c
  31. }
复制代码

作者: wangzheng3056    时间: 2013-8-10 12:01
太高兴了,总算有人进来问问题了
作者: wangzheng3056    时间: 2013-8-10 12:01
刷屏程序开始
作者: wangzheng3056    时间: 2013-8-10 12:02
刷频,刷频,刷屏
作者: magic2728    时间: 2013-8-10 17:29
三层循环,三个数位分别从0~9,注意排除非三位数情况,验证结果是否符合就行了。楼主自己敲一下代码吧,只有亲自动手才能发现问题的细节处,精妙处,加油!有不懂的欢迎再来提问!
作者: ゞ★人才涛涛    时间: 2013-8-11 20:22
楼主要问的是什么
作者: ゞ★人才涛涛    时间: 2013-8-11 20:22
撒旦发射点发速度发生的发打算
作者: kill2345    时间: 2013-8-12 10:17
ゞ★人才涛涛 发表于 2013-8-11 20:22 ; s5 d3 S3 o6 c) W4 h
撒旦发射点发速度发生的发打算
* I' i# O: `$ x/ B, b) J9 ?. {* K
难道楼上是来灌水的吗?
作者: 仰望0712    时间: 2013-8-12 16:51
#include<stdio.h>void main(){ int i,j,k,n;  for(i=1;i<10;i++)  for(j=0;j<10;j++)   for(k=0;k<10;k++)   {    n=i*100+j*10+k;    if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))     printf("水仙花数为:%d\n",n);   }}
作者: Summershumo    时间: 2013-8-15 16:55
顶一下,,,,,,,,,,,,
作者: jack_lvzheng    时间: 2013-11-3 10:16
while(1)! y; ?  R# ?5 Q
    发表回复();
作者: jack_lvzheng    时间: 2013-11-3 10:17
while(1)( O3 D, \0 e( Q# C4 x+ P+ t
    发表回复();
作者: lvzh2    时间: 2014-1-20 10:05
网上都有源码的。。。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5