QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3546|回复: 7
打印 上一主题 下一主题

为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?

[复制链接]
字体大小: 正常 放大

1

主题

6

听众

41

积分

升级  37.89%

  • TA的每日心情
    郁闷
    2013-10-10 09:59
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    自我介绍
    学习C语言

    群组2013年数学建模国赛备

    跳转到指定楼层
    1#
    发表于 2013-8-12 10:14 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    为什么我每次用C语言的pow函数算5的100次方,得出的结果都和课本的不一样?
    ; X0 Z" B2 J2 J: i& ]
    zan
    转播转播 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    c语言中int型double型都有固定的大小, int型在vc中占4字节,double占8字节,所以表示的固定大小肯定会有问题。建议用数组移位表示的方法计算这么大的数
    回复

    使用道具 举报

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    回复

    使用道具 举报

    1

    主题

    6

    听众

    187

    积分

  • TA的每日心情
    慵懒
    2014-11-9 09:25
  • 签到天数: 72 天

    [LV.6]常住居民II

    自我介绍
    ......

    新人进步奖

    回复

    使用道具 举报

    0

    主题

    7

    听众

    160

    积分

    升级  30%

  • TA的每日心情
    无聊
    2014-11-17 18:43
  • 签到天数: 30 天

    [LV.5]常住居民I

    自我介绍
    12级大学学生
    回复

    使用道具 举报

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    xx372859523 发表于 2013-8-12 14:37
    7 V/ t% `# R. \2 R有源程序吗
    1. #include<stdio.h>9 D9 Q0 w) d* a! ~9 x8 S
    2. #define max_size 100000
      3 \4 \$ I8 X/ C# Y5 _: }/ G: T
    3. #define pow_count 1000//次数
      4 ~\" M# }# q, ]. e
    4. int a[max_size];
      ! ~5 _& v. U( c9 _6 ^9 C2 }
    5. void add_bite(int i)
      ' |/ E% o( I# g2 J
    6. {
      . ]5 ^/ u0 O  ^; Q5 E5 }/ ?/ f4 O
    7.     if((a[i]+1)>10)  
      ( J5 y/ B6 n) q! w$ w
    8.     {
      * h: u9 Z( }1 u+ \% ?( v( a\" ~4 c& G
    9.          a[i]=(a[i]+1)%10;
      ' p( ~3 Z8 u4 ?' M8 h
    10.          add_bite(i+1);! L' I/ ^1 P/ @
    11.      }3 z1 |/ Z) c1 ]) e: L8 \* }
    12.     else
      & @$ j3 [$ Z0 V. [) W; O  f
    13.     {
      % |! X  I8 `/ V1 S- E$ c
    14.         a[i]+=1;' f5 C\" B3 ?+ B1 E4 O\" {7 P
    15.     }\" B, F2 `& k2 j/ m
    16. }
      / b' s1 {* t. n9 p2 ^
    17. void main()
      ) o- X8 Q/ D9 p& T
    18. {   
      7 b3 z6 R( c( X8 Q
    19.     int sum,i,j;
      ( Y8 E. o) J% L7 i8 m
    20.     a[0]=2;
      4 S! ]( q+ x! r
    21.     sum = 0;
      ! d8 H6 Z! M$ P
    22.     for(i=1;i<max_size;i++)1 Z4 L# a  I! \5 E. C: z9 _) B
    23.     {6 x/ u# }+ }! E4 {1 v  _6 x5 P6 m  o
    24.         a[i] = 0;    1 A7 K% I. [# G9 T
    25.     }+ O% z) I) K\" t. y* D& z
    26.     for(i = 1;i<pow_count;i++)
      5 m! K* |% }: i2 t1 J: h$ W
    27.     {\" r# R' P  R+ ~: q! z7 A
    28.         for(j=0;j<max_size;j++)
      $ X2 M/ ^2 M9 n+ L4 f& C
    29.         {5 n+ y& [/ R& N' ^2 h0 z3 \  q
    30.             if(a[j]*5>=10): @, {3 _$ |+ b/ W
    31.             {
      7 h/ F2 U7 Q9 p; A& B
    32.                 a[j] = a[j]*5%10;
      + r! F0 R% }+ l  [! U+ c$ ~
    33.                 add_bite(i+1);
      4 O- m1 B. S\" z8 T: B: X
    34.             }
      8 e( l4 V0 f3 n7 g0 q, I$ e, z
    35.             else) x& W7 V. g1 W3 y% S1 O$ L
    36.             {, s$ F9 d$ Q. w! J# C5 J+ F# W
    37.                a[j]= a[j]*5;3 T- g6 l0 b9 v* v
    38.              }
      0 f; I) k+ C( d! g: k
    39.          }  % Z\" p  ^( Y# g$ b3 z5 X, l6 `
    40.     }   
      1 Z6 t  b, L/ w8 Z& a, {# g
    41.     for(i=max_size;i>0;i--)
      % l, y1 Z* {* m2 c, s, u
    42.     {
      6 r9 ~! `( i! K
    43.         if(a[i]!=0) break;/ v- X  a% N# z# j$ R/ x
    44.     }
      ; F3 p2 W6 E0 |& ~* |\" \9 i
    45.     for(j=i;j>0;j--)7 p7 I# ]) G+ D1 p* z9 Q4 i
    46.     {
      / @* w. G& {0 F- n8 G% |7 ]
    47.         sum++;
      ( M1 W: C( G& s
    48.         printf("%d",a[j]);
      : z1 ~8 i\" T  m
    49.      }# ]8 J) G; g8 T7 i8 @
    50.      printf("\n%d",sum);' W5 e. T& k\" k/ w8 H' F
    51. }
    复制代码
    回复

    使用道具 举报

    1

    主题

    6

    听众

    187

    积分

  • TA的每日心情
    慵懒
    2014-11-9 09:25
  • 签到天数: 72 天

    [LV.6]常住居民II

    自我介绍
    ......

    新人进步奖

    LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 long int来定义sum。PS 5的100次方真心太大...

    点评

    wangzheng3056  所以应该用数据移位乘法解决范围问题  详情 回复 发表于 2013-8-15 22:01
    回复

    使用道具 举报

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    xx372859523 发表于 2013-8-15 18:47 $ P# ?+ W% U4 z
    LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...

    5 s) W7 h1 c: b8 x0 p  T所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-3 14:40 , Processed in 0.526757 second(s), 94 queries .

    回顶部