秋c.docx

上传人:b****5 文档编号:8103532 上传时间:2023-01-28 格式:DOCX 页数:11 大小:46.31KB
下载 相关 举报
秋c.docx_第1页
第1页 / 共11页
秋c.docx_第2页
第2页 / 共11页
秋c.docx_第3页
第3页 / 共11页
秋c.docx_第4页
第4页 / 共11页
秋c.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

秋c.docx

《秋c.docx》由会员分享,可在线阅读,更多相关《秋c.docx(11页珍藏版)》请在冰豆网上搜索。

秋c.docx

秋c

2007年秋c

2007年秋浙江省高等学校

计算机等级考试试卷(二级C)

试题1(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】

输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2°F。

计算公式如下,式中:

c表示摄氏温度,f表示华氏温度。

运行示例:

Enterlower:

30

Enterupper:

35

fahrcelsius

30-1.1

320.0

341.1

【程序】

#include

main()

{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、fahr

C、fahr>=upperD、fahr>upper

(2)A、fahr++B、fahr=fahr-2

C、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:

2

Entern:

3

sum=246

【程序】

#include

main()

{inti,n;

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'mAdam

Yes

运行示例2:

Enterastring:

elephant

No

【程序】

#include

#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.h

C、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分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include

main()

{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#3

C、3#4D、3#5

(14)程序运行时,输入9,输出(14)。

A、3B、3#3

C、3#4D、3#5

(15)将第8行改为“continue;”后,程序运行时,输入9,输出(15)。

A、3B、3#3

C、3#4D、3#5

(16)将第8行改为“;”后,程序运行时,输入9,输出(16)。

A、3B、3#3

C、3#4D、3#5

这里就是根据程序的流程做出判断。

试题5(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include

main()

{inti,j,temp;

inta[3][3]={1,2,3,4,5,6,7,8,9};/*第3行*/

voidf(int*x,int*y);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(i

for(i=0;i<3;i++)

for(j=0;j<3;j++)

printf("%2d",a[i][j]);}

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;}

说明,函数f实现变量的交换。

/*第3行*/定义的数组是

1,2,3

4,5,6

7,8,9

(17)程序的输出是(17)。

A、321654987B、789456123

C、123456789D、147258369

/*第8行*/实现数组对角线左下与右上元素的交换。

数组变为:

1,4,7

2,5,8

3,6,9

(18)将第8行改为“f(&a[i][j],&a[j][i]);”后,程序的输出是(18)。

A、321654987B、789456123

C、123456789D、147258369

两次交换,又复原了!

所以数组没有变化。

(19)将第8行改为“if(i<2)f(&a[i][j],&a[2-i][j]);”后,程序的输出是(19)。

A、321654987B、789456123

C、123456789D、147258369

数组变为:

7,8,9

4,5,6

1,2,3

(20)将第8行改为“if(j<2)f(&a[i][j],&a[i][2-j]);”后,程序的输出是(20)。

A、321654987B、789456123

C、123456789D、147258369

试题6(每小题3分,共12分)

#include

main()

{inti,x1,x2;

inta[5]={1,2,3,4,5};

voidf1(intx,inty),f2(int*x,int*y);

x1=x2=0;

for(i=1;i<5;i++){/*语句7*/

if(a[i]>a[x1])

x1=i;

if(a[i]

x2=i;}/*语句11*/

f2(&a[x1],&a[0]);

for(i=0;i<5;i++)printf("%2d",a[i]);

printf("\n");

f1(a[x2],a[1]);

for(i=0;i<5;i++)printf("%2d",a[i]);

printf("\n");

f2(&a[x2],&a[4]);

for(i=0;i<5;i++)printf("%2d",a[i]);

printf("\n");

f1(a[x1],a[3]);

for(i=0;i<5;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、21345

C、12354D、52341

函数f2是传址方式调用,交换a[4]和a[0]

这时:

a[5]={5,2,3,4,1}

(22)程序运行时,第2行输出(22)。

A、21345B、52341

C、25341D、12345

函数f1是传值方式调用,没有交换

这时:

a[5]={5,2,3,4,1}

(23)程序运行时,第3行输出(23)。

A、12354B、25314

C、12345D、52341

函数f2是传址方式调用,交换a[0]和a[4]

这时:

a[5]={1,2,3,4,5}

(24)程序运行时,第4行输出(24)。

A、52314B、12345

C、12354D、52341

函数f1是传值方式调用,没有交换

这时:

a[5]={1,2,3,4,5}

试题7(28分)

从n个不同的元素中,每次取出k个不同的元素,不管其顺序合并成一组,称为组合。

组合种数计算公式如下:

(1)定义函数fact(n)计算n的阶乘n!

,函数返回值类型是double。

(2)定义函数cal(k,n)计算组合种数

,函数返回值类型是double,要求调用函数fact(n)计算n的阶乘。

(3)定义函数main(),输入正整数n,输出n的所有组合种数

(1≤k≤n),要求调用函数cal(k,n)计算组合数。

#include

doublefact(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”,cal(k,n));

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1