QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3593|回复: 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次方,得出的结果都和课本的不一样?! f6 v7 m1 t9 \1 o& I* {8 O
    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 " d& g( v2 L1 U8 I. `& ^* f) s+ \
    有源程序吗
    1. #include<stdio.h>0 q- |  K7 s) o2 {: ?: r7 k7 @
    2. #define max_size 1000002 K' m7 v1 r* C# ^- c. n: |- |
    3. #define pow_count 1000//次数* Z\" X! K* g. T3 J( K
    4. int a[max_size];
      6 S- b' C8 w7 g. d3 }# i8 u' n) c
    5. void add_bite(int i)
      \" g4 X& X! q8 P4 Z! J+ O
    6. {% C\" p% X9 O4 |
    7.     if((a[i]+1)>10)  
      2 U1 {% U8 `  t2 b
    8.     {7 m! z5 @! Y3 G3 o! |' O
    9.          a[i]=(a[i]+1)%10;
      7 Y8 ^8 n1 x7 U+ {0 J- {
    10.          add_bite(i+1);  s5 L5 q0 E+ O$ d  F. O  i! ~6 ^7 Z
    11.      }
      ' f8 {$ {7 f- N\" C- m0 X5 x  `9 y
    12.     else9 X% O$ z! g# [/ d, I  D' A
    13.     {$ r9 x0 v3 Y6 N# \
    14.         a[i]+=1;9 B& {' V/ {6 I
    15.     }
      / I% T9 x0 z: {6 l) `* e
    16. }, h. Q\" ?0 }$ c: i% Y, W0 H, b
    17. void main()
      7 J; n4 o- L3 m( L8 @, l
    18. {   ; Y; r! [3 t4 Z5 B5 r2 a+ I9 P7 e
    19.     int sum,i,j;
      0 m# P; p( k: y, e! Q* _
    20.     a[0]=2;( u# @% J' s& B. X
    21.     sum = 0;, ~* D$ q# ^( D8 ]2 q
    22.     for(i=1;i<max_size;i++)1 H. k7 N/ S/ W+ h4 p+ |( W2 w/ ~
    23.     {; {1 V! {6 ]8 K% V# E% Q) @8 a
    24.         a[i] = 0;    - e& I, k2 S0 L- q8 F
    25.     }/ C; k\" Q% e2 O9 `3 {\" K* u6 ]
    26.     for(i = 1;i<pow_count;i++)
      5 y4 U3 L; ~- f8 n. [8 S
    27.     {
      ) q- c% Y, L4 i8 T
    28.         for(j=0;j<max_size;j++)
      8 j4 g8 E- [' a' z: X
    29.         {5 Z+ M5 |# h' l' r4 j2 a
    30.             if(a[j]*5>=10)
      : `: R+ S- v& X* w
    31.             {1 A' b6 t- r4 c% H& W2 l3 Z
    32.                 a[j] = a[j]*5%10;
      / t- i/ a5 F- s' x2 ]
    33.                 add_bite(i+1);
      3 l2 ~. X( C* [0 K1 Z
    34.             }* u* t' Y/ o6 d! h1 f
    35.             else) E$ j/ T+ f% V5 ^3 @  B
    36.             {
      6 l0 S( y5 R; z
    37.                a[j]= a[j]*5;2 o/ h1 U) N1 G1 ]
    38.              }# _6 r; H5 |; f( }! W% ~) B
    39.          }  
      2 G! M. D$ z- A9 {3 H: p$ E
    40.     }   
      $ O! o' n# G8 R: f& o. P& Q; J
    41.     for(i=max_size;i>0;i--)  F) H4 J- q! m! Z9 j* w2 K
    42.     {
      & M: y  K9 C/ a% w7 M- b+ h7 ?
    43.         if(a[i]!=0) break;% M  {# M7 Z0 I. u
    44.     }
      7 G, }! `. ~- {/ K, v  |9 B
    45.     for(j=i;j>0;j--)# v8 y\" e- s2 M/ S( c$ f6 J
    46.     {
      * y' T# b  N& ?1 I
    47.         sum++;
      , C9 Z; R8 b- `+ t* m: a
    48.         printf("%d",a[j]);
      # l5 {; J; Q  M
    49.      }
      5 u- f/ O9 U( X: N) e: g
    50.      printf("\n%d",sum);- [, M0 X; H% U+ 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 % b4 B4 J$ f( r) L. S
    LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...
    . a+ w3 I" l$ c
    所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-19 21:33 , Processed in 0.379947 second(s), 93 queries .

    回顶部