QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3548|回复: 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次方,得出的结果都和课本的不一样?
    5 q' Y, x* b5 r1 g. ]- P$ {2 m& `0 q
    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
    3 L3 z8 t& c5 ?8 G7 U% c有源程序吗
    1. #include<stdio.h>
      5 m6 \6 C8 K7 @1 v4 \8 a' n( s
    2. #define max_size 100000
      5 c! Q, Q# S' d' O% ^1 f* X2 U7 v1 C
    3. #define pow_count 1000//次数
      , I; j5 {* Y) Y$ v2 n
    4. int a[max_size];8 u; H3 {% g- f; C, w9 r
    5. void add_bite(int i)
      2 S8 C2 B0 e2 t+ r
    6. {% K: x2 c4 B' j3 g+ ~; D7 Y\" s
    7.     if((a[i]+1)>10)  5 L; I0 G0 n7 \4 u. w; B4 g
    8.     {
      6 `- G: C7 B9 t, r$ Y; s
    9.          a[i]=(a[i]+1)%10;3 Y7 d- D- ?* E9 A- T
    10.          add_bite(i+1);
      6 }! D5 K- p# j1 `  B
    11.      }1 j. ?2 a/ t* k
    12.     else
      , H4 R! N8 v$ M: N& z; z
    13.     {
      7 T% y, R8 X' A/ ~
    14.         a[i]+=1;- }) {4 d5 w6 {2 l# X& @
    15.     }
      1 f' j6 d# i5 n( `6 B
    16. }: T* |( h% C% b& u7 B6 Q
    17. void main()% c0 t0 `2 S4 e+ _2 _
    18. {   ! d, M3 D: _/ C7 c( W3 E* u
    19.     int sum,i,j;
      / n; X- m# Q5 v2 @1 _
    20.     a[0]=2;& l! O5 o3 H: y, G
    21.     sum = 0;
      7 N8 ?# I2 S$ H- Q. c9 `
    22.     for(i=1;i<max_size;i++)
      1 u; k# K+ i, F$ y7 e4 O
    23.     {
      ( T- }4 G% T2 p4 w+ q1 L
    24.         a[i] = 0;   
      2 ]\" S- C# m\" o6 \, t
    25.     }
      1 E\" ]7 _8 b2 s: V& F2 `
    26.     for(i = 1;i<pow_count;i++)
      8 J3 `$ t8 z$ j0 H
    27.     {9 `5 Z0 P. R. [: M
    28.         for(j=0;j<max_size;j++)% ~, [' n. a+ d* _1 F8 f) d
    29.         {
      . ~: f! t' k$ n5 m6 e! T
    30.             if(a[j]*5>=10)  u, c& g& X7 _
    31.             {
      4 f9 i; N& l/ @9 k
    32.                 a[j] = a[j]*5%10;
      ( O6 H, i9 M2 ]
    33.                 add_bite(i+1);: ?2 S: Y8 k  T8 @& u# y1 F
    34.             }4 x. N# D4 P- z\" n) |
    35.             else
      / @* d! d% \* C. Q# Y& ~8 d
    36.             {
      1 _  O6 W4 x! B1 b( }
    37.                a[j]= a[j]*5;
      ; z) ?2 A: u3 Z& T
    38.              }
      # v, o' F( N9 i% o) Y
    39.          }  ) |$ q8 N# Z$ R\" i
    40.     }   
      * }1 [\" c\" B  C0 w3 S5 E
    41.     for(i=max_size;i>0;i--)6 k$ ^# @; t) _) |$ ^. h
    42.     {0 R\" v: r; r8 ^% C3 p* h  m+ {3 _
    43.         if(a[i]!=0) break;
      6 Y5 z1 l: c6 Q- S- e
    44.     }
      9 Z3 l' E; l, r6 B. }8 \6 \# }1 i
    45.     for(j=i;j>0;j--)
      - {# X; }( @& s
    46.     {
      / W2 y. A: d1 p$ N
    47.         sum++;5 M. f# F- S2 M& [
    48.         printf("%d",a[j]);1 h/ U; W& u. X- }) n3 l* i
    49.      }' U* ?+ j9 P\" t8 R, R
    50.      printf("\n%d",sum);
      . G\" y; i+ [- n
    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
    ( v( d% F+ I6 _; d& r5 f$ `, p  TLZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...

    6 Q9 {& n: T  {. s' I2 ]  C* f所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 19:18 , Processed in 0.542231 second(s), 94 queries .

    回顶部