QQ登录

只需要一步,快速开始

 注册地址  找回密码
楼主: 蛋疼○▲○
打印 上一主题 下一主题

为什么我每次用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次方,得出的结果都和课本的不一样?
    8 K: t4 l. ?' a1 X# v* q' y+ d. j
    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 4 L. |" }2 H7 h8 ]0 F) B# B2 a
    有源程序吗
    1. #include<stdio.h>
      1 @* `) C$ V  j* a, J
    2. #define max_size 100000/ n7 G7 o8 L* i  K0 N
    3. #define pow_count 1000//次数+ |, B7 ^8 ]+ e
    4. int a[max_size];
      & ]+ }. u3 S* }8 L$ e
    5. void add_bite(int i)( @' b) \) m, S* G: ^
    6. {
      # x, b, w$ Q1 @
    7.     if((a[i]+1)>10)  ; C- j$ v, B\" Z+ s7 Z$ {. X4 b
    8.     {
      \" D, [. d8 F9 i) C) h0 W+ t\" v9 ^
    9.          a[i]=(a[i]+1)%10;
      ; D; T3 C1 y6 X' L\" h4 F' q7 T
    10.          add_bite(i+1);
      6 a: E- M\" ^* ~: X+ C
    11.      }
      $ @. m0 P7 W: P( Y% W
    12.     else0 }. g* j& i8 _* X: W% [
    13.     {
      - D$ g( y4 z0 z/ x& ^+ V
    14.         a[i]+=1;
      . G+ @, J. e5 c3 S1 J9 c* J
    15.     }4 n3 x& b8 U! X8 z- {* Y
    16. }+ Q4 J3 e4 n9 i9 t
    17. void main()' x+ k7 w. C; d7 X: ?7 ^
    18. {   
      1 M; K# y3 c3 R; l
    19.     int sum,i,j;9 H9 T! {$ z* Z6 z: ~7 u  D# G2 J
    20.     a[0]=2;
      0 H: B  _4 L5 d& ?8 I0 l4 p0 P% Q6 i
    21.     sum = 0;2 B; F7 }\" I- ^! {
    22.     for(i=1;i<max_size;i++)3 C  K) `9 A* y+ u
    23.     {
      4 ~# f% u* G& f- v* H' G- m, p
    24.         a[i] = 0;   
      0 v1 w3 h( ?\" f6 X3 i% x; m7 l
    25.     }4 H, T- u* P* ^2 W  @' K
    26.     for(i = 1;i<pow_count;i++)% G! p) O0 ^, Q0 e
    27.     {5 A& H* {% i2 a5 f0 q& f
    28.         for(j=0;j<max_size;j++)
      + z6 G( s4 s* x8 N4 G9 S+ I1 `
    29.         {; w) e: Y3 K8 _  n% W/ i/ \
    30.             if(a[j]*5>=10)0 W0 [\" Q! S% x* u/ z: [) H$ H
    31.             {  X6 \; W; A. r
    32.                 a[j] = a[j]*5%10;) l$ d8 V+ L1 y/ I
    33.                 add_bite(i+1);# J. F6 ]8 c6 C. y2 C  }$ x3 v
    34.             }- n  L4 z' A: Q# y1 J
    35.             else$ K: ]* r, k  o\" Z% p- b8 [
    36.             {% x1 C1 t+ ^! s4 Z* V
    37.                a[j]= a[j]*5;
      ) m1 F2 ~0 K. Y0 g% l. D
    38.              }
        d; U6 e4 @* E5 [4 _
    39.          }  
      9 l5 N\" k; M5 S# J' I
    40.     }   
      $ D% k% m3 F1 Y+ j' _: b2 L% q
    41.     for(i=max_size;i>0;i--)
      9 ]5 v; f: u0 R
    42.     {' l2 ^2 K* M/ X5 o
    43.         if(a[i]!=0) break;
      2 q- l: u' b3 o! j0 o
    44.     }
      5 V* G7 A: w: g2 T\" Y\" p9 N3 ^& R
    45.     for(j=i;j>0;j--): p. P( W3 y7 a7 m& K
    46.     {
      , D8 G4 U. v5 l5 a* E
    47.         sum++;
      . X5 ?& ?+ A0 m# m- u, `  K. {: U
    48.         printf("%d",a[j]);
      \" ]0 R+ j+ ]9 x
    49.      }1 s; F# j8 w/ Q% m6 W3 z2 E6 j
    50.      printf("\n%d",sum);7 V3 z5 ^4 U6 E2 }1 t
    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
    , [2 I' s) C1 k4 k  S8 k2 ZLZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...
    9 M( l$ ]2 k/ z' _$ U
    所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-12 10:39 , Processed in 1.024688 second(s), 96 queries .

    回顶部