2007年秋c

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2007年秋浙江省高等学校计算机等级考试试卷(二级C)试题1(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2°F。计算公式如下,式中:c表示摄氏温度,f表示华氏温度。5(32)9fc运行示例:Enterlower:30Enterupper:35fahrcelsius30-1.1320.0341.1【程序】#includestdio.hmain(){intfahr,lower,upper;doublecelsius;printf(Enterlower:);scanf(%d,&lower);printf(Enterupper:);scanf(%d,&upper);printf(fahrcelsius\n);for(fahr=lower;(1);(2)){celsius=(3);printf(%d(4)\n,fahr,celsius);}}【供选择的答案】(1)A、fahr=upperB、fahrupperC、fahr=upperD、fahrupper(2)A、fahr++B、fahr=fahr-2C、fahr+2D、fahr=fahr+2步长为2。增加2(3)A、5*(fahr-32)/9B、(5.0/9.0)*(fahr-32)C、5/9*(fahr-32)D、5*fahr-32/9结果应该是小数(4)A、%6dB、%6.2fC、%6.1fD、%6.0f保留1位小数试题2(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。运行示例:Entera:2Entern:3sum=246【程序】#includestdio.hmain(){inti,n;longa,sn;longfn(longa,intn);printf(Entera:);scanf(%ld,&a);printf(Entern:);scanf(%d,&n);(5)for(i=1;i=n;i++)(6)printf(sum=%ld\n,sn);}longfn(longa,intn)/*注意1*/{inti;longtn=0;for(i=1;i=n;i++){tn=tn+a;(7)}(8)}【供选择的答案】(5)A、sn=0;B、;C、sn=1;D、sn=a;和的初值为0!(6)A、sn=sn+fn(a,i);B、sn=sn+fn(a,n);C、sn=sn+fn(i,a);D、sn=sn+fn(i,n);循环终止次数为n,因此不能是n.否则不能累加,所以B错误。要和/*注意1*/匹配,所以CD错误。注意:例如,fn(3,2)的返回值是33。(2个3)(7)A、tn=tn*10;B、a=a*10;C、sn=tn*10;D、sn=sn+a*10;这里与sn无关,所以CD错误。如果选A,则最后是tn=330.因为返回的是tn,所以如果选择A,则tn的个位数就一定是0.这不符合题目要求。(8)A、return;B、returnsn;C、returna;D、returntn;试题3(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入一个以回车结束的字符串(少于80个字符),删除其中除英文字母和数字字符以外的其它字符,再判断新字符串是否对称(不区分大小写字母)。运行示例1:Enterastring:MadamI'mAdamYes运行示例2:Enterastring:elephantNo【程序】#includestdio.h#include(9)main(){intflag,i,k,length;charstr[80];printf(Enterastring:);gets(str);i=k=0;while(str[i]!='\0'){if(isupper(str[i]))str[i]=tolower(str[i]);if(isdigit(str[i])||isalpha(str[i])){(10)k++;}i++;}(11)length=k;flag=1;for(k=0;k=length/2;k++)if(str[k]!=str[length-1-k]){(12)break;}if(flag)printf(Yes\n);elseprintf(No\n);}【供选择的答案】(9)A、ctype.hB、string.hC、stdlib.hD、math.h本题是课本p114页例6.9与p122的5题的综合。参考课本p114页最后1行。(10)A、i++;B、str[k]=str[i];C、str[i]=str[k];D、;参考课本p122页倒数第4行。(11)A、str[i]='\0';B、str[i-1]='\0';C、str[k]='\0';D、;参考课本p122页倒数第3行。注意,这里的变量k就相当于课本的变量j.(12)A、flag=1;B、flag=0;C、;D、continue;参考课本p115页第7行。试题4(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#includestdio.hmain(){inti,m;scanf(%d,&m);for(i=2;i=m/2;i++)if(m%i==0){printf(%d#,i);break;/*第8行*/}printf(%d,i);}(13)程序运行时,输入5,输出(13)。A、3B、3#3C、3#4D、3#5(14)程序运行时,输入9,输出(14)。A、3B、3#3C、3#4D、3#5(15)将第8行改为“continue;”后,程序运行时,输入9,输出(15)。A、3B、3#3C、3#4D、3#5(16)将第8行改为“;”后,程序运行时,输入9,输出(16)。A、3B、3#3C、3#4D、3#5这里就是根据程序的流程做出判断。试题5(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#includestdio.hmain(){inti,j,temp;inta[3][3]={1,2,3,4,5,6,7,8,9};/*第3行*/voidf(int*x,int*y);for(i=0;i3;i++)for(j=0;j3;j++)if(ij)f(&a[i][j],&a[j][i]);/*第8行*/for(i=0;i3;i++)for(j=0;j3;j++)printf(%2d,a[i][j]);}voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}说明,函数f实现变量的交换。/*第3行*/定义的数组是1,2,34,5,67,8,9(17)程序的输出是(17)。A、321654987B、789456123C、123456789D、147258369/*第8行*/实现数组对角线左下与右上元素的交换。数组变为:1,4,72,5,83,6,9(18)将第8行改为“f(&a[i][j],&a[j][i]);”后,程序的输出是(18)。A、321654987B、789456123C、123456789D、147258369两次交换,又复原了!所以数组没有变化。(19)将第8行改为“if(i2)f(&a[i][j],&a[2-i][j]);”后,程序的输出是(19)。A、321654987B、789456123C、123456789D、147258369数组变为:7,8,94,5,61,2,3(20)将第8行改为“if(j2)f(&a[i][j],&a[i][2-j]);”后,程序的输出是(20)。A、321654987B、789456123C、123456789D、147258369试题6(每小题3分,共12分)#includestdio.hmain(){inti,x1,x2;inta[5]={1,2,3,4,5};voidf1(intx,inty),f2(int*x,int*y);x1=x2=0;for(i=1;i5;i++){/*语句7*/if(a[i]a[x1])x1=i;if(a[i]a[x2])x2=i;}/*语句11*/f2(&a[x1],&a[0]);for(i=0;i5;i++)printf(%2d,a[i]);printf(\n);f1(a[x2],a[1]);for(i=0;i5;i++)printf(%2d,a[i]);printf(\n);f2(&a[x2],&a[4]);for(i=0;i5;i++)printf(%2d,a[i]);printf(\n);f1(a[x1],a[3]);for(i=0;i5;i++)printf(%2d,a[i]);printf(\n);}voidf1(intx,inty){intt;t=x;x=y;y=t;}voidf2(int*x,int*y){intt;t=*x;*x=*y;*y=t;}数组a的原始数据为:a[5]={1,2,3,4,5}也就是:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5语句7到语句11实现这样的功能:在a[1]=2,a[2]=3,a[3]=4,a[4]=5找出最大和最小的数,所以x1=4但是,没有比a[0]更小的数,所以x2一直没有变,x2=0注意:函数f1是传值方式调用,没有实现交换。详细看课本P138.注意:函数f2是传址方式调用,实现交换。详细看课本P139.(21)程序运行时,第1行输出(21)。A、12345B、21345C、12354D、52341函数f2是传址方式调用,交换a[4]和a[0]这时:a[5]={5,2,3,4,1}(22)程序运行时,第2行输出(22)。A、21345B、52341C、25341D、12345函数f1是传值方式调用,没有交换这时:a[5]={5,2,3,4,1}(23)程序运行时,第3行输出(23)。A、12354B、25314C、12345D、52341函数f2是传址方式调用,交换a[0]和a[4]这时:a[5]={1,2,3,4,5}(24)程序运行时,第4行输出(24)。A、52314B、12345C、12354D、52341函数f1是传值方式调用,没有交换这时:a[5]={1,2,3,4,5}试题7(28分)从n个不同的元素中,每次取出k个不同的元素,不管其顺序合并成一组,称为组合。组合种数计算公式如下:!()!!knnCnkk(1)定义函数fact(n)计算n的阶乘n!,函数返回值类型是double。(2)定义函数cal(k,n)计算组合种数knC,函数返回值类型是double,要求调用函数fact(n)计算n的阶乘。(3)定义函数main(),输入正整数n,输出n的所有组合种数knC(1≤k≤n),要求调用函数cal(k,n)计算组合数。#includestdio.hdoublefact(doublex,intn){intk;doubleresult=1;for(k=1;k=n;k++)result*=k;returnresult;}doublecal(intk,intn){doubleresult;result=1.0*fact(n)/(fact(n-k)*fact(k));/*乘1.0变小数*/returntresult;}voidmain(){intk,n;doublecal;scanf(”%d%d”,&k,&n);for(k=1;k=n;k++){printf(”cal=%lf\n”,c

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功