问题 问答题

fclose(fp);

答案

参考答案:void CalValue(void)
{
int i,data;
for(i=0;i<MAXNUM;i++)
{
if(!xx[i])
continue; /*如果当前数为0,则结束本次循环,取下一个数*/
if(xx[i]>0)
totNum++; /*统计正整数的个数*/
data=xx[i]>>1; /*将数右移一位*/
if(data%2==0) /如果右移1位后,产生的新数是偶数*/
{
totCnt++;
totPjz+=xx[i];
} /*统计这些数的个数,并将满足条件的原数求和*/
}
totPjz/=totCnt; /* 求满足条件的这些数(右移前的值)的算术平均值*/
}

解析:本题的解题思路是首先利用一个for循环来依次从数组中取得各数,由于题目要求数组中正整数的个数,因此,零不做任何处理,接着去取下一个数。只要某数大于零,则该数一定是正整数,这时就给变量totNum(正整数的个数)累加1,之后把该正整数右移一位后的结果临时保存在变量data中,再对这个临时变量进行是否偶数的判断。如果该临时变量中保存的值是偶数,则表明原数符合条件,就给变量totCnt(符合判断条件的正整数个数)累加1,并把当前的变量data右移前的原数的值累加到变量totPjz中,当所有符合判断条件的数都被找出后,再对totPjz进行求平均值的计算。

单项选择题
单项选择题