浙江省高等学校C语言二级笔试部分真题.docx
《浙江省高等学校C语言二级笔试部分真题.docx》由会员分享,可在线阅读,更多相关《浙江省高等学校C语言二级笔试部分真题.docx(83页珍藏版)》请在冰豆网上搜索。
浙江省高等学校C语言二级笔试部分真题
浙江省高等学校
计算机等级考试试卷(二级C)
2010-2007笔试部分真题
2010年春浙江省高等学校
计算机等级考试试卷(二级C)
一、程序阅读与填空(24小题,每小题3分,共72分)
1.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一个整数,求它的各位数字之和及位数。
例如,17的各位数字之和是8,位数是2。
运行示例:
Enteraninteger:
-153
sum=8,count=3
【程序】
#include
main()
{
intcount=0,in,sum=0;
printf("Enteraninteger:
");
scanf("%d",&in);
if(D)in=-in;
do{
sum=sum+
(2)C;
(3)C;
count++;
}while((4)B);
printf("sum=%d,count=%d\n",sum,count);
}
【供选择的答案】
(1)A、in==0B、in>0
C、in!
=0D、in<0
(2)A、in/10B、inmod10
C、in%10D、in
(3)A、in=in%10B、in/10
C、in=in/10D、in%10
(4)A、in%10!
=0B、in!
=0
C、!
inD、in/10!
=0
2.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输出50到70之间的所有素数。
要求定义和调用函数isprime(m)判断m是否为素数,若m为素数则返回1,否则返回0。
素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
运行示例:
53596167
【程序】
#include
#include
main()
{inti;intisprime(intm);
for(i=50;i<=70;i++)
if((5)B)
printf("%d",i);
}
intisprime(intm)
{
inti,k;
(6)B
k=(int)sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0)(7)A;
(8)A;
}
【供选择的答案】
(5)A、isprime(m)!
=0B、isprime(i)!
=0
C、isprime(m)==0D、isprime(i)==0
(6)A、if(m!
=1)return1;B、if(m==1)return0;
C、;D、if(m==1)return1;
(7)A、return0B、return1
C、returni<=kD、return
(8)A、return1B、return0
C、returnD、returni<=k
3.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入6个整数,找出其中最小的数,将它和最后一个数交换,然后输出这6个数。
要求定义和调用函数swap(x,y),该函数交换指针x和y所指向单元的内容。
运行示例:
Enter6integers:
61821097
Afterswaped:
69782101
【程序】
voidswap(int*x,int*y)
{intt;
(9);
}
main()
{inti,index,a[10];
for(i=0;i<6;i++)
scanf("%d",&a[i]);
(10);
for(i=1;i<6;i++)
if(a[index]>a[i])
(11);
(12);
printf("Afterswaped:
");
for(i=0;i<6;i++)
printf("%d",a[i]);
printf("\n");
}
【供选择的答案】
(9)A、t=*x,*x=*y,*y=t
B、t=x,x=y,y=t
C、*t=*x,*x=*y,*y=*t
D、&t=x,x=y,y=&t
(10)A、index=0B、index=5
C、index=indexD、index=1
(11)A、a[index]=a[i]B、i=index
C、a[i]=a[index]D、index=i
(12)A、swap(a[index],a[5])
B、swap(*a[index],*a[5])
C、swap(a[*index],a[*5])
D、swap(&a[index],&a[5])
4.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
#defineT(c)(((c)>='0')&&((c)<='9')?
(c)-'0':
-1)
voidf1(charch)
{
switch(ch){
case'0':
printf("0");
case'1':
printf("1");
case'2':
printf("2");break;
case'3':
printf("3");
default:
printf("9");
}
printf("\n");
}
doublef2()
{
return(double)(5/2);
}
doublef3(intn)
{
if(n==1)return1.0;
elsereturn1.0+1.0/f3(n-1);
}
main()
{
printf("%d%d\n",T('7'),T('a'));
f1('1');
printf("%.1f\n",f2());
printf("%.3f\n",f3(4));
}
【问题】
(13)程序运行时,第1行输出(13)。
A、7-1B、-17C、7aD、-1-1
(14)程序运行时,第2行输出(14)。
A、1239B、12C、1D、9
(15)程序运行时,第3行输出(15)。
A、2.5B、2C、2.0D、3
(16)程序运行时,第4行输出(16)。
A、1.000B、2.000C、1.500D、1.667
5.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include
main()
{
inti,j,t,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
for(i=0;i<3;i++)
for(j=0;j<=i/2;j++){
t=a[i][j],a[i][j]=a[i][3-j],a[i][3-j]=t;
}
printf("%d\n",a[0][1]);
printf("%d\n",a[2][2]);
}
程序2
#include
main()
{
charstr[10]="27";
inti,number=0;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='7')
number=number*8+str[i]-'0';
printf("%d\n",number);
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='5')
number=number*6+str[i]-'0';
printf("%d\n",number);
}
【问题】
(17)程序1运行时,第1行输出(17)。
A、3B、4C、1D、2
(18)程序1运行时,第2行输出(18)。
A、12B、11C、10D、9
(19)程序2运行时,第1行输出(19)。
A、2B、27C、23D、16
(20)程序2运行时,第2行输出(20)。
A、19B、140C、147D、2
6阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
main()
{
inti,j;
charch,*p1,*p2,*s[4]={"four","hello","peak","apple"};
for(i=0;i<4;i++){
p1=p2=s[i];
ch=*(p1+i);
while(*p1!
='\0'){
if(*p1!
=ch){
*p2=*p1;
p2++;
}
p1++;
}
*p2='\0';
}
for(i=0;i<4;i++)
printf("%s\n",s[i]);
}
【问题】
(21)程序运行时,第1行输出(21)。
A、ourB、fourC、furD、fou
(22)程序运行时,第2行输出(22)。
A、elloB、hlloC、heoD、hell
(23)程序运行时,第3行输出(23)。
A、peakB、eakC、pekD、pak
(24)程序运行时,第4行输出(24)。
A、ppleB、appleC、aleD、appe
二、程序编写(每小题14分,共28分)
1.编写程序,输入100个整数,将他们存入数组a,求数组a中所有奇数之和。
2.按下面要求编写程序:
(1)定义函数total(n)计算
,函数返回值类型是int。
(2)定义函数main(),输入正整数n,计算并输出下列算式的值。
要求调用函数total(n)计算
。
计算机等级考试参考答案(二级C)
一、程序阅读与填空(24小题,每小题3分,共72分)
D
C
C
B
B
B
A
A
A
A
D
D
A
B
C
D
D
C
C
B(21)A(22)B(23)C(24)D
二、程序编写(每小题14分,共28分)
1.
#include
voidmain()
{
inta[100],i,s=0;
for(i=0;i<100;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==1)
s=s+a[i];
}
printf("%d\n",s);
}
2.
#include
inttotal(intn)
{
inti,s=0;
for(i=1;i<=n;i++)
s=s+i;
returns;
}
voidmain()
{
inti,n;
floats=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+1.0/total(i);
printf("%f\n",s);
}
2009年秋浙江省高等学校
计算机等级考试试卷(二级C)
一、程序阅读与填空(24小题,每小题3分,共72分)
1.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
计算并输出下式的值,要求精确到最后一项的绝对值小于10-3(保留4位小数)。
运行示例:
sum=0.8361
【程序】
#include
#include
main()
{intdenominator=1,flag=1;
doubleitem,sum=0;
___
(1)____
while(____
(2)___){
___(3)____
denominator=denominator+3;
flag=-flag;
}
printf("sum=___(4)____\n",sum);
}
【供选择的答案】
(1)
[A]item=0;[B]item=0.0001
[C];[D]item=2
(2)
[A]fabs(item)>=1E-3[B]fabs(item)<1E-3
[C]fabs(item)>=0.0001[D]fabs(item)<0.001
(3)
[A]sum=sum+item;item=flag*1.0/denominator;
[B]sum=sum+flag*1.0/denominator;
[C]item=flag*1.0/denominator;sum=sum+item;
[D]item=item+flag*1.0/denominator;
(4)
[A]%.0f[B]%.4f[C]%f[D]%4.f
2.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输出1到100之间的所有完数。
要求定义和调用函数is(n)判断n是否为完数,若n为完数则返回1,否则返回0。
完数就是因子和与它本身相等的数,1不是完数。
运行示例:
628
【程序】
#include
main()
{inti;intis(intn);
for(i=1;i<=100;i+1)
if(___(5)____)
printf(“%d”,i);
}
intis(intn)
{inti,sum;
__(6)___
sum=0;
for(i=1;i<=n/2;i++)
if(___(7)____)
sum=sum+i;
if(__(8)__)return1;
elsereturn0;
}
【供选择的答案】
(5)
[A]is(i)==0[B]is(i)!
=0
[C]!
is(n)[D]is(n)
(6)
[A]if(n!
=1)return1;[B]if(n!
=1)return0;
[C]if(n==1)return0;[D]if(n==1)return1;
(7)
[A]n%i==0[B]n%i!
=0
[C]i%n==0[D]i%n!
=0
(8)
[A]n==0[B]sum!
=n[C]i>n/2[D]sum==n
3.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】计算并输入Fibonacci序列前10项之和。
要求定义和调用函数fun(fib,n),该函数将Fibonacci序列前n项的值存放在一维数组fib中。
Fibonacci序列:
1,1,2,3,5,8,13,21,34,55,……,该序列的第一个数和第二个数都是1,从第三个数开始,每个数是前两个数之和。
运行示例:
sum=143
【程序】
#include
main()
{inti,sum,a[10];
___(9)____
___(10)____
sum=0;
for(i=0;i<10;i++)
sum=sum+____(11)___;
printf(“sum=%d”,sum);
}
voidfun(intfib[],intn)
{inti;
fib[0]=fib[1]=1;
for(i=2;i___(12)____
}
【供选择的答案】
(9)
[A]fun(intfib[],intn);[B]voidfun(intfib[],intn)
[C];[D]voidfun(intfib[],intn);
(10)
[A]fun(fib,n);[B]fun(a[],10);
[C]fun(a,10);[D]fun(a[10],10);
(11)
[A]fib[i][B]a[i][C]a[10][D]fib[0]
(12)
[A]fib[i]=fib[i-1]+fib[i-2];
[B]fib[i-1]=fib[i-2]+fib[i-3];
[C]fib[i+1]=fib[i]+fib[i-1];
[D]fib[i]=fib[i-1]+fib[i+1];
4.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
#defineS(a,b)(a)>(b)?
(a):
(b)
intf1(charch)
{intgrade;
switch(ch){
case“A”:
grade=95;break;
case“B”:
grade=85;break;
case“C”:
grade=75;
case“D”:
grade=65;break;
default:
grade=0;
}
returngrade;
}
intf2()
{staticintk=1,s;
s=s+k;
k++;
returns;
}
intf3(intn)
{if(n==1)return2;
elsereturnf3(n-1);
}
main()
{inti;
printf(“%d\n”,f1(‘C’));
for(i=1;i<=3;i++)
f2();
printf(“%d\n”,f2());
printf(“%d\n”,f3(4));
printf(“%d\n”,S(3,2+2));
}
【问题】
(13)
程序运行时,第1行输出(13)
[A]65[B]0
[C]75[D]95
(14)
程序运行时,第2行输出(14)
[A]10[B]1
[C]6[D]2
(15)
程序运行时,第3行输出(15)
[A]24[B]2[C]10[D]1
(16)
程序运行时,第4行输出(16)
[A]3[B]4[C]5[D]1
5.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
程序1
#include
main()
{inti,j,a[3][3]={1,0,0,4,5,0,7,8,9};
intflag=1;
for(i=0;i<3;i++)
for(j=0;j
flag=a[i][j];
printf(“%d\n”,flag);
for(j=2;j>0;j--)
for(i=2;i>=j;i--)
flag=a[i][j];
printf(“%d\n”,flag);
}
程序2
#include
main()
{charstr[10]=”4Ae2E”;
inti;
for(i=0;str[i]!
=’\0’;i++)
if(str[i]>=’a’&&str[i]<=’z’)
putchar(str[i]);
putchar(‘\n’);
for(i=0;str[i]!
=’\0’;i++)
if(str[i]>=’a’&&str[i]<=’z’)
putchar(str[i]-‘a’+’A’);
elseif(str[i]>=’A’&&str[i]<=’Z’)
putchar(str[i]-‘A’+’a’);
putchar(‘\n’);
}
【问题】
(17)
程序1运行时,第1行输出(17)
[A]0[B]1
[C]8[D]9
(18)
程序1运行时,第2行输出(18)
[A]9[B]7
[C]5[D]1
(19)
程序2运行时,第1行输出(19)
[A]AeE[B]a[C]ae[D]e
(20)
程序2运行时,第2行输出(20)
[A]4Ae2E[B]42[C]AeE[D]aEe
6.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include
#include
main()
{inti,j;
charstr[10],*s[10]={“SQL”,”hello”,”bear”,”zone”};
gets(str);
for(i=0;i<4;i++){
if(strcmp(str,s[i])>0)continue;
j=3;.
while(j>=i){
s[j+1]=s[j];
j--;
}
s[i