QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3577|回复: 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次方,得出的结果都和课本的不一样?( t( N# B5 w5 Z9 f) 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 ! v; I- p0 d8 V$ F; b* H
    有源程序吗
    1. #include<stdio.h>
      : m( t( q; a- ]) [
    2. #define max_size 100000
      8 x$ q3 K* d: @: {
    3. #define pow_count 1000//次数( p! r3 ~7 ~! H, y, d6 [
    4. int a[max_size];
      0 U$ V  E1 u3 U* a+ O2 A9 N. o/ J
    5. void add_bite(int i)
      9 ~$ F5 Y% X& U  Y1 [& H* ]4 O$ b& `
    6. {; `  K% \8 M5 g- X  ?5 j. r9 y8 N
    7.     if((a[i]+1)>10)  
      6 j7 \/ c# J% |
    8.     {
      ( G# C- `8 x- S2 i
    9.          a[i]=(a[i]+1)%10;: r* e/ |$ [# L7 n
    10.          add_bite(i+1);7 V7 ?5 G- D; @7 @, E0 j
    11.      }
      1 ~/ ?* m% ~/ \- i
    12.     else
        D! G: v: i3 j: Q6 F
    13.     {
      5 }) m5 S- W1 Z4 Q\" G
    14.         a[i]+=1;3 v5 f7 v\" l. G  f- w
    15.     }, m2 C/ r; r' n
    16. }
      6 G# l. f1 Q6 N. T. K& @\" v+ b4 c
    17. void main()8 ?2 T/ ?3 N- R\" h- }+ o
    18. {   4 N/ k) s) U, |2 l\" V\" _$ Z
    19.     int sum,i,j;
      1 D: r2 }9 T6 G\" U  f  A; U9 p
    20.     a[0]=2;( z! @, V4 ~\" N, d, M, g
    21.     sum = 0;
      7 A' q2 A1 b& E  p\" H
    22.     for(i=1;i<max_size;i++)
      8 t. a1 \2 d  O7 r# W2 }
    23.     {4 ]% O: u3 \3 m' b% p: u
    24.         a[i] = 0;    ; Q# B; h% v& G+ i
    25.     }
      5 s5 Y: F0 T5 H7 {4 ?1 x5 E
    26.     for(i = 1;i<pow_count;i++)
      8 f4 m( n+ |+ `; C\" h8 A
    27.     {
      3 _0 P3 C8 k# r2 m) ~) L
    28.         for(j=0;j<max_size;j++)- i3 R7 R2 X9 d9 V  l
    29.         {
      3 s9 D9 [; L2 L\" d7 w
    30.             if(a[j]*5>=10)9 ~0 u. l3 d0 Z' K
    31.             {+ F. D\" ~2 N, C! z
    32.                 a[j] = a[j]*5%10;
      : n5 G9 P0 Z  ^; J2 B
    33.                 add_bite(i+1);7 g2 T) B+ Y# D3 z
    34.             }
      9 ]1 N7 M/ k  n% ]% k\" v
    35.             else* o8 K3 I. Q  q, @. m8 {* b
    36.             {
      3 a: g9 c3 c% [5 v; e$ J
    37.                a[j]= a[j]*5;) N- F9 r6 Q3 L
    38.              }& K; k5 ~. D- h& N+ V
    39.          }  
      - S2 C4 }\" h/ X
    40.     }   
      3 f( u5 L; a7 E5 Z$ z, I, I
    41.     for(i=max_size;i>0;i--), v' F% H\" o/ W( d; O- J2 E
    42.     {/ p$ k6 G  D% H# R6 o
    43.         if(a[i]!=0) break;6 X0 t( P6 ^5 \5 K
    44.     }( B! p\" u& c' A/ A( f# H
    45.     for(j=i;j>0;j--)
      ( ]* P# h4 j& Q  L/ V
    46.     {! X, A) t: o' K2 B( Q
    47.         sum++;! Q' m; \5 Q' g, W0 z* @+ M3 X. p
    48.         printf("%d",a[j]);+ V' I7 N4 |3 j
    49.      }
      & D/ d% H2 y7 Y. Q+ K
    50.      printf("\n%d",sum);  \) |& \\" [% L9 \; b, F9 D( q$ S) @
    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 7 T6 [7 |9 s. G- ~
    LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...

    8 ?1 S  }2 J% V0 m# w' a0 M" M所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-9 14:56 , Processed in 0.362221 second(s), 94 queries .

    回顶部