我这个代码为什么出错了啊
#include
int main()
{
int i , j , m , n , x , y , t ;
double z , k ;
int a[1000] , b[1000] ;
scanf( "%d" , &t ) ;
a[0] = 1 ;
a[1] = 1 ;
for( i = 2 ; i < 1003 ; i ++ )
{
m = i - 1 ;
n = i - 2 ;
a[i] = a[m] + a[n] ;
}
for( x = 1 , y = 2 , k = 0 ; x <= t ; x ++ , y ++ )
{
z = a[y] / a[x] ;
k += z ;
}
printf( "%.2f" , k ) ;
return 0 ;
}
z = a[y] / a[x]这是整数除法呀
改为z = a[y]*1.0 / a[x]
此外,问你前n项和,那你循环次数怎么能写死呢,t都没用上啊
越界啊,10行i<1003,那么i可以等于1002啊,那14行a[i]就越界了啊。应该是i<1000啊
z = a[y] / a[x] 也不对,因为a数组是整型数组,两个元素相除是整除,没有小数部分,改为 z = a[y] * 1.0 / a[x];
z = a[y] / a[x]
这里是整除
应该是
z = a[y] / (double)a[x]
另外,数组越界
int a[1005] , b[1005] ;