以下是我的程式碼
#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
小弟我不才,是個新手
請問出現上述問題,該怎麼解決呢??...是發生溢位了??
謝謝高手的指點!!