#1401: 請問 WA(LINE 11)


abysses (abysses)

學校 : 國立高雄應用科技大學
編號 : 5449
來源 : [1.174.0.16]
最後登入時間 :
2013-08-24 12:19:24
b189. 97七區資訊學科4(改編) -- 97學年度彰雲嘉區資訊學科能力競賽 | From: [122.126.1.18] | 發表日期 : 2009-02-18 21:29

以下是我的程式碼

#include <stdio.h>

int main(void)
{
      int n ;
      double sumX = 0 ;
      while( scanf("%d", &n) != EOF )
      {
            int i, j, index, integer ;
            long long  step ;
            char s[n][33] ;
            float power, sum[n] ;
           
            for( j = 0 ; j < n ; j++ )
            {
                  index = integer = 0 ;
                  power = 0.0 ;
                  scanf("%s", s[j]) ;
           
                  if( s[j][0] == '1' )      index = -1 ;
                  else                      index = 1 ;
           
                  for( i = 1, step = 128 ; i <= 8 ; i++ )
                  {
                        integer = integer + (s[j][i] - '0') * step ;
                        if( (step / 2) == 0 )      step = 1 ;
                        else                       step = step / 2 ;
                  }
                  integer = integer - 127 ;
           
                  for( i = 9, step = 2 ; i <= 31 ; i++ )
                  {
                        power = power + (float)(s[j][i] - '0') / step ;
                        step = step * 2 ;
                  }
                 
                  for( i = 1,step = 1 ; i <= integer ; i++ )
                  {
                        step = step * 2;
                  }
                  sum[j] = index * step * (1.0 + power) ;
                  s[j][32] = '\0' ;
                  printf("字串%d %s = %g\n", j + 1, s[j], sum[j]) ;
                  sumX = sumX + sum[j] ;
            }
           
            printf("總和為%g\n", sumX) ;
      }
      return 0 ;
}

---------------

與正確輸出不相符(line:11)
您的答案為: 字串1 11111111111111111111111111111111 = 0
正確答案為: 字串1 11111111111111111111111111111111 = -6.80565e+38

小弟我不才,是個新手

請問出現上述問題,該怎麼解決呢??...是發生溢位了??

謝謝高手的指點!!

 
ZeroJudge Forum