5.
试题二(共15分)阅读以下说明和C函数,将应填入(n)处字句写在答题纸的对应栏内。【说明1】函数Counter(intn,intw[])的功能是计算整数n的二进制表示形式中1的个数,同时用数组w记录该二进制数中1所在位置的权。例如,十进制数22的二进制表示为10110。对于该二进制数,1的个数为3,在w[0]中存入2(即21)、w[1]中存入4(即22)、w[2]中存入16(即24)。【C函数1】intCounter(intn,intw[]){inti=0,k=1;while((1)){if(n%2)w[i++]=k;n=n/2;(2);}returnI;}【说明2】函数Smove(intA[],intn)的功能是将数组中所有的奇数都放到所有偶数之前。其过程为:设置数组元素下标索引i(初值为0)和j(初值为n-1),从数组的两端开始检查元素的奇偶性。若A[i]、A[j]都是奇数,则从前往后找出一个偶数,再与A[j]进行交换;若A[i],A[j]都是偶数,则从后往前找出一个奇数,再与A[i]进行交换;若A[i]是偶数而A[j]是奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。【C函数2】voidSmove(intA[],intn){inttemp,i=0,j=n-1;if(n<2)return;while(i<j){if(A[i]%2==1&&A[j]%2==1){(3);}elseif(A[i]%2==0&&A[j]%2==0){(4);}else{if((5)){temp=A[i];A[i]=A[j];A[j]=temp;}i++,j--;}}}[15分]