面试题:调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
试题二(共 15分)
阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明 1】
函数Counter(int n, int w[])的功能是计算整数n的二进制表示形式中1的个数,同时用数组w记录该二进制数中1所在位置的权。
例如,十进制数22的二进制表示为10110。对于该二进制数,1的个数为3,在w[0]中存入2(即 )、w[1]中存入4(即 )、w[2]中存入16(即 )。
1
2 2
2 4
2
【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--;
}
}
}
A.理解语言发生发展在先,语言表达发生发展在后
B.理解语言和语言表达同时同步产生
C.语言表达发生发展在先,理解语言发生发展在后
D.理解语言是在语言表达的基础上产生和发展起来的
人工开挖土方,两人横向间距不得小于2m,纵向间距不得小于()m。
A.1
B.2
C.3
D.4
以下程序从键盘输入20个整数存入数组,统计输入非负数的个数,并计算输入的非负整数之和。
#include"stdio.h"
main()
{int i,a[20],s,n;
s=n=0:
for(i=0;i<20;i++)scanf("%d",&a[i])
for(i=0;i<20;i++)
{if(a[i]<0)break;
S+=a[i];n++;
}
printf("s=%d\t,n=%d\n",s,n);
}
错误:______
改正:______
参考答案:错误
A.144个
B.120个
C.60个
D.12个
有以下程序,其中%u表示按无符号整数输出()
main()
{unsigned int x=0xFFFF; /* x的初值为十六进制数 */
printf(“%u\n”,x);
}
程序运行后的输出结果是()。
A.-1
B.65535
C.32767
D.0xFFFF
根据下文回答第 71~72 题。
一正常小儿身高80cm,前囟已闭,头围47cm,乳牙16枚,能用简单的语言表达自己的需要,对人、事有喜乐之分。
第 71 题 此小儿的年龄最可能是()。
A.1岁
B.1岁半
C.2岁半
D.3岁
E.3岁半
A.115
B.116
C.111
D.113