【正确答案】int i, odd=0;
/*循环变量i从0开始,每次增1,直到其值小于MAX,对数组xx中的每个元素的奇偶性进行判断,如果是奇数,变量odd加1,同时把这个元素累加到变量ave1,否则,变量even加1,同时把这个元素累加到变量are2*/
for(i=0; i<MAX; i++)
if(xx[i]%2)//如果xx[i]是奇数
{
odd++; //变量odd加1
avel+=xx[i]; //把xx[i]累加到变量ave1
}
else
{
even++; //变量even加1
ave2+=xx[i]; //把xx[i]累加到变量ave2
}
ave1/=1.0*odd; //奇数的和ave1除以奇数的个数odd,得到所有奇数的平均值赋给ave1
ave2/=1.0*even; //偶数的和ave2除以偶数的个数even,得到所有偶数的平均值赋给are2
/*根据方差的计算公式计算所有偶数的方差*/
for(i=0;i<MAX;i++)
{
if(xx[i]%2==0) //如果xx[i]是偶数
totfc+=(xx[i]-ave2)*(xx[i]-are2); //把(xx[i]-are2)的平方累加到变量totfc
}
totfc/=1.0*even; //变量totfc除以偶数的个数even,得到所有偶数的方差
【答案解析】 读取1000个数,奇数个数及平均值,偶数个数、平均值及方差。
①定义循环变量i、表示奇数个数的变量odd并设置其值为0。
②采用for循环语句,对数组xx中每个数组元素xx[i]对2求余数,如果余数为1,则说明数组元素xx[i]的值为奇数,则变量odd的值加1,并把数组元素xx[i]的值累加到变量ave1,否则,说明数组元数xx[i]的值为偶数,则变量even的值加1,并把数组元素xx[i]的值累加到变量ave2。
③退出for循环语句后,用变量ave1除以奇数的个数odd,得到所有奇数的平均值赋给ave1,用变量ave2除以偶数的个数even,得到所有偶数的平均值赋给ave2。
④利用for循环语句,对数组xx中每个数组元素xx[i]对2求余数,如果余数等于0,则说明数组元素xx[i]的值为偶数,这时把表达式xx[i]-ave2的平方值累加到变量totfc。退出循环后,用变量totfc的值除以偶数的个数even,得到所有偶数的方差赋给变量totfc。