QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3653|回复: 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次方,得出的结果都和课本的不一样?) l/ b2 o1 I. `# X7 t8 W
    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
    8 R) w3 P! z0 e: z1 ~  B有源程序吗
    1. #include<stdio.h>
      * i* x! D/ P7 A5 a+ u
    2. #define max_size 100000
      0 N* _- E& f. |0 v7 A6 c* ^
    3. #define pow_count 1000//次数- U( N# a3 Y8 W+ R  u0 g' h
    4. int a[max_size];! N, V8 \* x) S* w
    5. void add_bite(int i)- r4 G4 P/ C( `. r/ r
    6. {, f$ o4 P% M  U' n5 j7 ~9 y
    7.     if((a[i]+1)>10)  
      % v4 l1 a( w5 u8 m6 i* I
    8.     {7 W! S  x& O7 T- K
    9.          a[i]=(a[i]+1)%10;: R5 v9 d( _3 Z$ H0 u9 b
    10.          add_bite(i+1);1 z* ~/ w! @, i\" ?* Z
    11.      }6 {/ t! n/ U+ d0 G$ J
    12.     else4 N8 U+ A/ ^\" U* @! Q. ]
    13.     {
      3 y5 R) }! ~; I1 m  Y
    14.         a[i]+=1;
      7 o2 G$ o; R% B$ [1 \! E
    15.     }- z& @: a$ n' X7 l\" |
    16. }
      ' P$ f4 p' t0 n+ R
    17. void main()9 d9 _; J0 L' B1 w8 q/ j* i3 s
    18. {   
      8 u6 a  Q( m7 w) F
    19.     int sum,i,j;
      3 e. F/ Q. [) ]0 Y3 r: ^
    20.     a[0]=2;9 S- k6 h: l- x; Z( L- Z
    21.     sum = 0;, ^8 h4 C- W  z
    22.     for(i=1;i<max_size;i++)9 u- y, Q. Y! y\" u' k- {
    23.     {
      * U3 T# e) j) Y/ P
    24.         a[i] = 0;   
      * c\" P% @* s. T  z+ k. c4 N
    25.     }
      \" Z& X' C- h- u: k
    26.     for(i = 1;i<pow_count;i++)
      3 v9 R; h) y2 G9 D
    27.     {6 G( A  g2 }$ H\" q! x6 ]6 E3 D% y1 E) }
    28.         for(j=0;j<max_size;j++)
      , ~5 e\" i0 V& J3 x* F3 q$ _
    29.         {0 y8 S4 [! X# F  ^5 b
    30.             if(a[j]*5>=10)
      2 X  g+ H% m: N. s; O( Q2 y
    31.             {2 B- ?\" Y/ y\" r+ \7 O
    32.                 a[j] = a[j]*5%10;* F( n0 g5 K8 I1 g; v& r$ @
    33.                 add_bite(i+1);
      $ b4 M+ T& e- P7 o
    34.             }( b0 h# a2 E( }! f4 _! v8 l1 `
    35.             else
      7 `, ~8 y2 E9 ~% o
    36.             {/ {/ m# K( r( Z# Q( B4 I* O* p; I
    37.                a[j]= a[j]*5;
      + G/ B1 Q) e' \8 n* O  J( l
    38.              }
      + e6 d5 P: W( h! W5 S
    39.          }  
      ; F* o/ T4 k' a
    40.     }   # `% p2 p8 H- \6 V7 F
    41.     for(i=max_size;i>0;i--)
      0 e% J# z: p0 Y5 g
    42.     {6 N7 S: r$ f3 _5 K
    43.         if(a[i]!=0) break;6 J) J) Z+ A) p# N. D8 O/ C( {
    44.     }9 i. @7 \9 u6 x% |% Q% m
    45.     for(j=i;j>0;j--)
      + h' q! h4 X+ T
    46.     {  q* L$ e9 s; b/ j+ U. B
    47.         sum++;) H\" _5 C/ Y+ r% o  I; X\" G0 s2 }
    48.         printf("%d",a[j]);
      + g- Q: V' T) [; V8 b% b: e$ r
    49.      }& C9 i! A. _- F. @6 W, N% z) d- e
    50.      printf("\n%d",sum);& z* |0 _/ u: x; u. x3 `
    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
    # |6 Z) B- `$ Z0 L/ @LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...
    $ \, ~1 Y9 F( s0 V0 i  R
    所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-3 02:16 , Processed in 0.353194 second(s), 92 queries .

    回顶部