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