第2个回答 2013-09-28
for(mem=0,i=0;mem<POPSIZE&&i<20;mem++,i++)
第二项只能有一个值,如果两个或多个条件,不能用“,”操作符,必须用逻辑运算符连接
还有最里面的好复杂,可以用一个循环来完成
for(j=0;j<20;j++)
{
int tmp =0;
for(int k=19, int l=0; l <19; k--,l++) tmp += shuzu[j][l] << k;//*2^n可以用向左位移n位来代替
population[mem].gene[i] = tmp >> 20;// 1/20^20 = 9.5367431640625e-27, 不知道这么小的能做什么。。。我就按2^20改了下,1/2^20可以用向右位移20位来计算
}
还有就是最后的shuzu[j][19]越界了。
shuzu[19][19]=population[mem].gene[i]这句,i和mem都没有初始化,这结果不能预料呀