预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

全国计算机技术与软件专业技术资格(水平)考试 2009年下半年试卷下午试题 1.本试卷的试题中共有75个空格,需要全部解答。 2.每个空格对应一个序号,有A、B、C、D四个选项,请选择一个最恰当的选项作为解答。 试题一 阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。 [说明] 求连续函数f(x)的根(方程f(x)=0的解)的最简单方法是二分法。为此,首先需要在若干点上检查函数值的符号,如果发现f(a)与f(b)符号相反(a<b),则在区间(a,b)中必然存在f(x)的根。因为当x从a变到b时,连续函数的值将从正变到负(或从负变到正),必然要经过0。区间(a,b)就是根的初始范围。 取该区间的中点m,如果f(m)=0,则根就是m。如果f(a)与f(m)符号相反,则根一定在区间(a,m)中;如果f(m)与f(b)符号相反,则根一定在区间(m,b)中。因此,根的范围缩小了一半。 依此类推,将区间一半一半地分下去,当区间的长度很小(达到根的精度要求,例如0.001)时,或者当区间中点处的函数值几乎接近于0(即绝对值小于预先规定的微小量,例如0.001)时,近似计算就可以结束了。 以下流程图描述了用二分法近似计算区间(a,b)中f(x)的根的过程。 [流程图] 试题二 阅读以下说明和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--; } } } 试题三 阅读以下说明、C函数和问题,将解答写入答题纸的对应栏内。 [说明1] 函数test_f1(intm,intn)对整数m、n进行某种运算后返回一个整数值。 [C函数1] inttest_f1(intm,intn) {intk; k=m>n?m:n; for(;(k%m!=0)||(k%n!=0);k++); returnk; } [问题1] (1)请写出发生函数调用test_f1(9,6)时,函数的返回值; (2)请说明函数test_f1的功能。 [说明2] 设在某C系统中为每个字符分配1个字节,为每个指针分配4个字节,sizeof(x)计算为x分配的字节数。 函数test_f2()用于测试并输出该C系统为某些数据分配的字节数。 [C函数2] voidtest_f2() {charstr[]="NewWorld";char*p=str;chari='\0'; void*ptr=malloc(50); printf("%d\t",sizeof(str));printf("%d\n",sizeof(p)); printf("%d\t",sizeof(i));printf("%d\n",sizeof(ptr)); } [问题2] 请写出函数test_f2()的运行结果。 [说明3] 函数test_f3(chars[])的功能是:将给定字符串s中的所有空格字符删除后形成的串保存在字符数组tstr中(串s的内容不变),并返回结果串的首地址。 [C函数3] char*test_f3(constchars[]) {chartstr[50]={'\0'};unsignedinti,k=0; for(i=0;i<strlen(s);i++) if(