数学建模社区-数学中国

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

作者: kill2345    时间: 2013-8-10 11:42
标题: 谭浩强书上的课后习题水仙花数,求解
本帖最后由 kill2345 于 2013-8-10 12:00 编辑
# j! S6 C! t3 C, C# N5 d6 K: D5 r; E3 H
自学c,正在看谭浩强的《C程序设计》,遇到一个题不会,请教
2 G3 S$ w5 _4 j+ \: J       输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为
( C+ o1 f% c9 [3 _153=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>6 s2 O( C$ G: [- d8 m7 o! w. T
  2. int pow(int x,int y)
    1 P4 c3 h4 k4 N* M
  3. {
    6 z0 p7 M& E- Z* B
  4.     int num=1,i;
    % _% N# |2 _3 B! B% L5 h5 I8 V
  5.     for(i=0;i<y;i++)# N# U3 V% f  B6 B- f& X
  6.     {
    6 t: t. a7 ?9 b
  7.         num *= x;
    , I- u  w  n  D6 f2 _. h
  8.     }2 N6 r. D+ Y3 ^
  9.     return num;   
    . Q3 Y6 a. [) d8 u
  10. }
    ' h& U  w+ r7 }
  11. void main()
    ! `* k; ]* w% ^, Q7 p
  12. {
    . j7 ^1 i0 y9 u' e9 J
  13.     int num,temp,i,count=1,number;
    0 U6 ]9 H  u7 q% q6 O6 p
  14.     int temp1;
    0 V3 I1 N' ~( c; J' R3 w2 F
  15.     scanf("%d",&num);. ?" {, b, \' Y1 E: H: H" U
  16.     number = num;; ~* }5 y2 a/ Y) k4 z
  17.     for(i = 10 ; num/i ; i*=10)//记录一下num的位数
    ) l/ r4 a0 A% C8 |! p% Z( T7 Q
  18.     {count++;}" u# P4 ?1 e1 I! q) R6 y; H
  19.     //将number所有位数分离
    6 v1 z9 o+ D1 \" b0 N% `+ b
  20.     temp = pow(num%10,count);
    % w: h) I+ C; j$ @+ y0 T  j6 d6 g. _+ x
  21.     for(i = count -1 ; i>0 ; i-- )
      K$ ]2 m; N/ H, |: _
  22.     {   
    9 @3 h9 z5 w3 P# b& K/ _5 c6 z. k
  23.         temp1 = num / pow(10,i);3 c8 Y0 \; J& x, T( p( L% G" T% |6 h
  24.         temp += pow(temp1,count);; D/ k4 {/ r6 F; ~" U; p
  25.         num = num - pow(10,i)* (num / pow(10,i));
    4 s) ?  [  o$ c
  26.     }( S9 a+ |; J7 W' @8 e$ n
  27.      if(temp == number)
    4 N3 y9 X9 k% v& ^/ f) X1 s' V1 n
  28.      printf("yes");
    % \' h6 v( G) b& o1 t  v" t, G
  29.      else
    2 p8 W% w7 ?' ]/ E4 S1 S
  30.      printf("no");
    1 ~7 s' A& }' ?! F! H
  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
% i8 c4 g9 g! h0 I! E+ M9 j撒旦发射点发速度发生的发打算
9 o2 u6 E( B, M7 r% J
难道楼上是来灌水的吗?
作者: 仰望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)2 v2 i8 m, z8 C& w
    发表回复();
作者: jack_lvzheng    时间: 2013-11-3 10:17
while(1)
& z- m! |/ A9 M" h    发表回复();
作者: lvzh2    时间: 2014-1-20 10:05
网上都有源码的。。。




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