高考理综下半年浙江省高等学校计算机等级考试.docx
《高考理综下半年浙江省高等学校计算机等级考试.docx》由会员分享,可在线阅读,更多相关《高考理综下半年浙江省高等学校计算机等级考试.docx(10页珍藏版)》请在冰点文库上搜索。
![高考理综下半年浙江省高等学校计算机等级考试.docx](https://file1.bingdoc.com/fileroot1/2023-6/16/3f3a0271-527f-4f06-a75d-5ec78fd19ce8/3f3a0271-527f-4f06-a75d-5ec78fd19ce81.gif)
高考理综下半年浙江省高等学校计算机等级考试
2010下半年浙江省高等学校计算机等级考试
二级C程序设计试卷
一、程序阅读与填空(24小题,每小题3分,共72分)
1.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入5个整数,将它们从小到大排序后输出。
运行示例:
Enter5integers:
9-9360
Aftersorted:
-90369
【程序】
#include
main()
{
inti,j,n,t,a[10];
printf("Enter5integers:
");
for(i=0;i<5;i++)
scanf("%d",.&a[i]);
for(i=1;i<5;i++)
for(j=0;j<5;j++)
if(a[j]>a[j+1]){
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
printf("Aftersorted:
");
for(i=0;i<5;i++)
printf("%3d",a[i]);
}
【供选择的答案】
(1)A.&a[i]B.a[i]C.*a[i]D.a[n]答案:
A
(2)A.i<5B.i<4C.i>=0D.i>4答案:
A
(3)A.j<5-i-1B.j<5-iC.j<5D.j<=5答案:
B,C也可以
(4)A.a[j]a[j-1]C.a[j]>a[j+1]D.a[j-1]>a[j+1]答案:
C
2.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输出80-120之间的满足给定条件的所有整数,条件为构成该整数的每位数字都相同。
要求定义和调用函数is(n)判断整数n的每位数字是否都相同,若相同则返回1,否则返回0。
运行示例:
8899111
【程序】
#include
main()
{
inti;intis(intn);
for(i=80;i<=120;i++)
if((5))
printf("%d",i);
printf("\n");
}
intis(intn)
{
intold,digit;
old=n%10;
do{
digit=n%10;
if((6))return0;
(7)
n=n/10;
}while(n!
=0);
(8)
}
【供选择的答案】
(5)A.is(n)==0B.is(i)==0C.is(n)!
=0D.is(i)!
=0答案:
D
(6)A.digit!
=n%10B.digit==oldC.old==n%10D.digit!
=old答案:
D
(7)A.digit=old;B.old=digit/10;C.digit=old;D.;答案:
C
(8)A.return;B.return1;C.return0;D.return1;答案:
D
3.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一个以回车结束的字符串(少于80个字符),将其逆序输出。
要求定义和调用函数revers(s),该函数将字符串s逆序存放。
运行示例:
Enterastring:
1+2=3
Afterrevered:
3=2+1
【程序】
#include
voidrevers(char*str)
{
inti,j,n=0;
chart;
while(str[n]!
='\0')n++;
for(i=0,(9);i{t=str[i];str[i]=str[j];str[j]=t;}
}
main()
{inti=0;
chars[80];
printf("Enterastring:
");
while((11))i++;
s[i]='\0';
(12)
printf("Afterrevered:
");
puts(s);
}
【供选择的答案】
(9)A.j=n-1B.j=nC.j=n-2D.j=n+1答案:
A
(10)A.i++,j--B.i++,j++C.i--,j++D.i--,j--答案:
A
(11)A.s[i]=getchar()B.(s[i]=getchar()!
=’\n’
C.s[i]!
=’\0’D.(s[i]=getchar()!
=’\n’)答案:
D
(12)A.revers(*s)B.revers(s)
C.revers(&s)D.revers(str)答案:
B
4.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
#defines(x)3<(x)<5
inta,n;
voidf1(intn)
{
for(;n>=0;n--)
{
if(n%2!
=0)continue;
printf("%d",n);
}
printf("\n");
}
doublef2(doublex,intn)
{
if(n==1)return1;
elsereturnx*f2(x,n-1);
}
main()
{
inta=9;
printf("%d%d\n",a,s(a));
f1(4);
printf("%.1f\n",f2(2.0,3));
printf("%d%d\n",n,s(n));
}
【供选择的答案】
(13)程序运行时,第1行输出(13)。
A.01B.91C.00D.90答案:
B
(14)程序运行时,第2行输出(14)。
A.31B.420C.4321D.0答案:
B
(15)程序运行时,第3行输出(15)。
A.8.0B.2.0C.4.0D.3.0答案:
C
(16)程序运行时,第4行输出(16)。
A.01B.31C.00D.30答案:
A
5.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include
main()
{
inti,j;
statica[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(j==0||j==i)a[i][j]=1;
elsea[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=2;i<4;i++)
{
for(j=0;j<=i;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
程序2
#include
main()
{
charstr[80];
inti;
gets(str);
for(i=0;str[i]!
='\0';i++)
if(str[i]=='z')str[i]='a';
elsestr[i]+=1;
puts(str);
}
【供选择的答案】
(17)程序1运行时,第1行输出(17)。
A.1B.11C.121D.1331答案:
C
(18)程序1运行时,第2行输出(18)。
A.1B.11C.121D.1331答案:
D
(19)程序2运行时,输入123,输出(19)。
A.123B.012C.231D.234答案:
D
(20)程序2运行时,输入sz,输出(20)。
A.szB.tyC.taD.tz答案:
B
6.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
main()
{
inti,j;
charch,*p1,*p2,*s[4]={"tree","flower","grass","garden"};
for(i=0;i<4;i++)
{
p2=s[i];
p1=p2+i;
while(*p1!
='\0')
{*p2=*p1;
p1++;
p2++;
}
*p2='\0';
}
for(i=0;i<4;i++)
printf("%s\n",s[i]);
}
(21)程序运行时,第1行输出(21)。
A.reeB.eeC.treeD.e
(22)程序运行时,第1行输出(22)。
A.flowerB.owerC.werD.lower
(23)程序运行时,第1行输出(23)。
A.grassB.ssC.rassD.ass
(24)程序运行时,第1行输出(24)。
A.enB.ardenC.denD.garden
二、程序编写(每小题14分,共28分)
1.输入100个整数,将它们存入数组a,再输入一个整数x,统计并输出x在数组中出现的次数。
参考程序:
#include
main()
{
inti,a[100],x,cnt=0;;
for(i=0;i<100;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=0;i<100;i++)
if(x==a[i])cnt++;
printf("%d\n",cnt);
}
2.按下面要求编写程序:
(1)定义函数fact(n)计算n!
,函数返回值double。
doublefact(intn)
{
inti;
doublet=1;
for(i=1;i<=n;i++)
t=t*i;
returnt;
}
(2)定义函数main(),输入正整数n,计算并输出下列算式的值。
要求调用函数fact(n)计算n!
。
参考程序:
#include
main()
{
intn,i;
doublesum=0;
while(scanf("%d",&n),n<=0);
for(i=1;i<=n;i++)
sum+=(n+1-i)/fact(i);
printf("\n%f\n",sum);
}