以下过程用来在w数组中插入x,w数组中的数已按由小到大的/顷序存放,n指存储单元中存放数组中数据
第1题
第2题
第3题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明1]
函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。
[C函数1]
void fun(char*W,char x,int*n)
{ int i,P;
p=0;
w[*n]=x;
while(x>w[p]) (1) ;
for(i=*n,i>p;i--)w[i]=(2);
w[p]=x;
++*n;
}
[说明2]
函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。
[C函数2]
void revstr(char*s)
{ char*p,c;
if(s==NULL)return;
p=(3); /*p指向字符串s的最后一个有效字符*/
while(s<p){ /*交换并移动指针*/
C=*s;
(4)=*p;
(5)=c;
}
}
第4题
试题二(共 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--;
}
}
}
第5题
第6题
以下函数按每行8个输出数组中的数据: yoidfun(int*w,intn) {inti; for(i=0;i<n;i++) {________ printf(%d,w[i]); } printf(\n); } 下划线处应填入的语句是
A.if(i%8=0)printf(""\n"");
B.if(i/8=0)continue;
C.if(i/8=0)printf(""\n"");
D.if(i%8=0)continue;
第7题
以下程序调用随机函数得到N个20以内的整数放在s数组中。函数fun的功能是找出s数组中的最大数(不止一个)所在下标传回主函数进行输出,并把最大值作为函数值返回,请填空。 define N 30 man() { int s[N],d[N],i,k,m; for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);} m=fun(【 】); printf("m=%d\n",m); printf(”The index ;\n"); for(i=0;i<k;i++)printf("%4d",d[i]); printf("\n\n"); } fun(int*w,int*d,int * k) { int i,j,m=0,v; for(i=0;i<N;i++) if(w[i]>w[m])【 】; v=w[m]; for(i=0,j=0;i<N;i++) if(w[i]==v)【 】; *k=【 】; return【 】; }
第8题
若有以下定义,则不移动指针P,且通过指针P引用值为98的数组元素的表达是______。
int w[10]={23,54,10,33,47,98,72,80,61},*p=w;
第9题
若有以下定义,则不移动指针P,且通过指针P引用值为98的数组元素的表达是______。
int w[10]={23,54,10,33,47,98,72,80,61},*p=w;