QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3547|回复: 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次方,得出的结果都和课本的不一样?
    # o7 x7 o4 f% F- M: l" q# ~4 y/ D1 C
    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 ! v; W2 \$ J6 W( z7 X
    LZ考虑一件事:int定义变量是有范围的,5的100次方超出整型定义范围(32767好像),可能要试一下长整型 lon ...
    " S4 {/ X6 f7 k$ H9 d
    所以应该用数据移位乘法解决范围问题
    回复

    使用道具 举报

    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 / ?4 a& h" I3 p9 q
    有源程序吗
    1. #include<stdio.h>
      8 M2 J; D1 f% h& E9 L
    2. #define max_size 100000
      - m* x5 C4 G) T
    3. #define pow_count 1000//次数
      ' ^# J. k  L' ]\" s. {/ }* Z5 p
    4. int a[max_size];5 a4 }# k/ y( G0 e
    5. void add_bite(int i)
      1 C5 h4 C2 g8 B7 k6 k
    6. {2 T  Y7 B. X- q$ b\" M' u8 D9 u- J
    7.     if((a[i]+1)>10)  
      $ g$ t3 z  v! Z1 H) H! m3 Z
    8.     {
      - v+ Z; e& m- I4 r  L+ h
    9.          a[i]=(a[i]+1)%10;5 s0 v6 _% h9 j7 M  O$ w
    10.          add_bite(i+1);
      + h\" I7 E! X# \* T7 r. L% K. v
    11.      }, W\" P/ Q( z- n6 k
    12.     else
      0 Y7 |' f) m$ E4 N( w4 ?
    13.     {7 ^4 U) G0 X) z5 U) D% R
    14.         a[i]+=1;7 c  Z9 z3 U0 z: B+ y9 c
    15.     }
      . D: ~3 L  n7 X& @! ~4 Z  K
    16. }2 n9 h  O9 c( ]7 @/ W9 j# W9 {
    17. void main()
      4 o. ~5 ~+ N7 A7 \( W, F' F
    18. {   
      1 P$ m' _: a* d  Y: p9 Y
    19.     int sum,i,j;
      - |$ I4 `6 V2 ^; `) x( E
    20.     a[0]=2;
      0 o( J1 \+ e3 w1 ?$ X& }9 ^6 B
    21.     sum = 0;8 ?& g0 z# {2 Y6 m, \& T) [
    22.     for(i=1;i<max_size;i++)
      * O8 u8 I, a/ A! t* w
    23.     {4 x+ ^7 S) i* L* a! M: l# c* Q
    24.         a[i] = 0;   
      ; V6 m3 _# }) A# Y1 A+ c; R
    25.     }' {4 i% |+ f8 j+ d5 k5 p8 m
    26.     for(i = 1;i<pow_count;i++)
      3 ?& @/ I; Z( ^# V
    27.     {  p  w0 D% q+ A# y' t+ ]4 m  h
    28.         for(j=0;j<max_size;j++)2 J. ^\" |! |; E7 D* v$ \; [: S0 X7 D
    29.         {
      & m& A8 k! Q) K1 x: n
    30.             if(a[j]*5>=10)
      0 m4 E( }4 U5 b; r  {9 L( A1 W
    31.             {5 z3 D2 H7 ?- B+ C/ T, z
    32.                 a[j] = a[j]*5%10;
      2 k4 W1 m8 N, \( |+ i  [
    33.                 add_bite(i+1);' e* y; B% v' U5 K. d
    34.             }! g( p/ o2 g4 G) A
    35.             else
      3 C: }7 w- L1 F6 T4 t
    36.             {\" u1 y: a* E) c: Q' J, P
    37.                a[j]= a[j]*5;
      , g2 s! Q3 e8 Y1 K* z8 Y! A7 b! [* `4 Y
    38.              }
      ) Q$ B\" C5 @  c# R/ `+ F& ^, t) G
    39.          }  
      2 H% G9 K) P, T% `/ z8 w# \
    40.     }   * S* t; G$ K7 |
    41.     for(i=max_size;i>0;i--)2 i4 z\" R! a/ i* g$ d# C! B
    42.     {
      ) Q6 ^1 C2 G4 p% z
    43.         if(a[i]!=0) break;
      4 M$ t! G# I9 L
    44.     }2 ~4 w3 _( I/ y7 U1 ?
    45.     for(j=i;j>0;j--)1 C4 J0 b3 k$ R* C  @( g
    46.     {
        c; Y# _& G/ c, {' z
    47.         sum++;. p\" G; u* j3 {1 I, f\" B/ W
    48.         printf("%d",a[j]);
      ) E$ U: _) m3 A( L' u+ q8 B
    49.      }
      + S% f$ Y8 X! @, ?! q8 e
    50.      printf("\n%d",sum);3 \\" s, p8 t9 s. A: }+ a3 F0 O  w
    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-6-3 15:39 , Processed in 0.370389 second(s), 94 queries .

    回顶部