QQ登录

只需要一步,快速开始

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

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

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

1

主题

6

听众

41

积分

升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    学习C语言

    群组2013年数学建模国赛备

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

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

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

    [LV.8]以坛为家I

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

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

    群组2013年数学建模国赛备

    xx372859523 发表于 2013-8-15 18:47
    # L# L  K. {$ m( n; l: Q- E7 zLZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...
    - W+ m7 r" q6 T# j/ v: _
    所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

    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-12 14:37 0 [- ~2 C6 e: W9 [8 ]  @1 x9 A
    有源程序吗
    1. #include<stdio.h>
      0 x, @! ~' B+ H/ e  ~1 ?9 R
    2. #define max_size 100000) ^# \1 o$ z# r3 M7 R8 Y
    3. #define pow_count 1000//次数
      3 z2 B; ]6 ]\" x7 Q* e7 [# z\" m
    4. int a[max_size];
      ' ~) F\" S5 q7 @/ N- O1 m
    5. void add_bite(int i)\" X6 h9 c7 E0 x' z( d7 F& `% ]6 b
    6. {8 r+ @5 |) g! B( Y. n6 e0 m- e9 q6 N7 ~
    7.     if((a[i]+1)>10)  * N! F( w# F/ n3 s% W
    8.     {4 T5 S7 _. U1 Z) \& V
    9.          a[i]=(a[i]+1)%10;  a) t4 {4 J2 L& j- ?( K
    10.          add_bite(i+1);
        B. T1 F$ \9 T8 J) G  S5 S: P
    11.      }* K8 E\" j! d% \$ F& J. Q+ V/ y5 B
    12.     else' @$ ?. z4 Q( U. P: n
    13.     {
      ) F& S* }. ~) A7 d' y
    14.         a[i]+=1;# M+ k$ O- R2 z3 o\" d
    15.     }8 l1 I8 G  U6 W' b% J
    16. }  a/ @+ Q, L9 ?7 s+ V; H$ U\" O
    17. void main()1 g7 B) N% B2 K  y9 L
    18. {   - C; Z4 A# v/ |) ~4 l
    19.     int sum,i,j;
      - h& R2 @- G) ^3 k$ ]0 ]
    20.     a[0]=2;$ M& D5 E. l5 C( d: ?( p% A: N8 M
    21.     sum = 0;
      9 T1 l1 X- S\" S$ m) [1 A& W. J
    22.     for(i=1;i<max_size;i++). w7 l+ Q* F3 [/ p& v
    23.     {
        w: ~, A$ \/ T+ x6 ?
    24.         a[i] = 0;    . |$ @; r\" K5 \+ M( e4 y8 ]5 }
    25.     }  L: w0 Z4 h2 T7 Q& S9 `
    26.     for(i = 1;i<pow_count;i++), {$ D, k- }% V) b  S- o# H# b
    27.     {% }5 h/ f1 b& `, W# ?' |
    28.         for(j=0;j<max_size;j++)* y( r0 y1 f: d- {7 t4 P) U8 K& {
    29.         {  l8 w# a9 r' o% \) A, d
    30.             if(a[j]*5>=10)
      - O% S' E) s5 Z3 [
    31.             {\" B( f/ Y& l8 Y; ?/ E3 }( r
    32.                 a[j] = a[j]*5%10;
      . G1 |6 X7 z\" _! k\" |- k3 q* L9 g
    33.                 add_bite(i+1);
      . A# A& k\" G. m  Z
    34.             }
      . t: r$ n\" Z. d6 H8 n\" w8 k( ^
    35.             else
      2 T1 s- E/ _4 s2 u* z
    36.             {
      1 K! E1 P  S! j( s! I1 s8 d
    37.                a[j]= a[j]*5;( f' @8 i* q4 Z5 b7 l
    38.              }
      ( @3 x) I( @1 N. f, y
    39.          }  * z( E( ?1 i( d
    40.     }   
      % |* b0 z! i3 }! s# x) N1 R- l
    41.     for(i=max_size;i>0;i--)
      4 O. i' P$ s7 Q: ?& z, C9 q
    42.     {
      5 c* I. @& W2 E7 w/ [% z' f
    43.         if(a[i]!=0) break;
      + Z( G% B. r8 t, ?7 o6 Y
    44.     }. t( z( o\" J# B
    45.     for(j=i;j>0;j--)
      8 q6 }* i+ _% D* y
    46.     {
      + v0 t) y5 i1 h! M
    47.         sum++;
      3 |4 \* G; x7 N3 k, o
    48.         printf("%d",a[j]);
      . F6 x$ I5 X8 ~
    49.      }
      ' a! N  I* h, m1 l
    50.      printf("\n%d",sum);
      ) e2 R5 ~, S3 J5 }/ G' J9 r$ Z/ \4 Y
    51. }
    复制代码
    回复

    使用道具 举报

    0

    主题

    7

    听众

    160

    积分

    升级  30%

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

    [LV.5]常住居民I

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

    使用道具 举报

    1

    主题

    6

    听众

    187

    积分

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

    [LV.6]常住居民II

    自我介绍
    ......

    新人进步奖

    回复

    使用道具 举报

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

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

    [LV.8]以坛为家I

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

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

    群组2013年数学建模国赛备

    回复

    使用道具 举报

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

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

    [LV.8]以坛为家I

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

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

    群组2013年数学建模国赛备

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

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-3 02:24 , Processed in 0.790705 second(s), 94 queries .

    回顶部