浙江省二级C语言考试真题史杨杨.docx
《浙江省二级C语言考试真题史杨杨.docx》由会员分享,可在线阅读,更多相关《浙江省二级C语言考试真题史杨杨.docx(30页珍藏版)》请在冰豆网上搜索。
浙江省二级C语言考试真题史杨杨
2022--2022浙江省二级C语言考试真题--史杨杨
计算机等级考试试卷(二级C)
试题1(每小题3分,共12分)【程序说明】
输入一个整数n(n>=2),输入菲波那契序列的前n项,每行输出6个数,菲波那序列:
1,1,2,3,5,8,13,,数列的前两个数都是1,从第三项开始,每个数是前两个数之和。
运行示例:
Entern:
10
11235813213455#includemain()
{intcount,i,n,某1,某2,某;printf(\canf(\某1=某2=1;
printf(\
(1);for(i=1;i<=n-2;i++){
(2);
printf(\count++;
if((3))printf(\某1=某2;
(4);}
}
【供选择的答案】
(1)A、count=2C、count=1
(2)A、某=某1-某2
B、count=0D、count=-1B、某=某1+某2D、某=2B、count%6!
=0D、count/6!
=0B、某2=某1D、某2=某
答案:
A答案:
B答案:
C答案:
D
C、某=某1(3)A、count/6==0C、count%6==0(4)A、某=某1+某2C、某=某2
试题2(每小题3分,共12分)【程序说明】
输入2个正数m和n(1<=m
count=4,um=17【程序】#include#includeintprime(intm)
{inti,n;
if(m==1)return(5);n=qrt(m);
for(i=2;i<=n;i++)
if(m%i==0)return(6);return(7);}
main()
{intcount=0,i,m,n,um=0;printf(\canf(\for(i=m;i<=n;i++)
if((8)){um+=i;count++;}
printf(\}
【供选择的答案】(5)A、1B、mC、m==1(6)A、mC、0(7)A、mC、0
D、0B、1
答案:
D
答案:
C答案:
B答案:
A
D、nB、1D、i==n
(8)A、prime(i)!
=0C、1=prime(i)B、prime(i)==0D、!
prime(i)
试题3(每小题3分,共12分)
【程序说明】
输入一个2某3的二维数组,找出最大值以及它的行下标和列下标,并输出该结果。
运行示例:
Enterarray(2某3):
3210-96-1ma某=a[0][2]=103210-96-1#includemain()
{intcol,row,i,j;
inta[2][3];
printf(\for(i=0;i<2;i++)for(j=0;j<3;j++)
canf(\(9));(10);for(i=0;i<2;i++)for(j=0;j<3;j++)
if(a[i][j]>a[row][col]){(11)
}
printf(\for(i=0;i<2;i++){for(j=0;j<3;j++)printf(\(12)}
【供选择的答案】(9)A、&a[i][j]C、a[i][j](10)A、row=col=2;C、a[row][col]=0;(11)A、row=j;col=i;C、row=i;col=j;(12)A、printf(“\\n”)};
B、&a[j][i]
D、a[j][i]答案:
AB、row=col=0;
D、a[row][col]=-1;答案:
BB、a[row][col]=a[i][j];
D、a[row][col]=a[j][i];答案:
CB、}printf(“\\n”);
答案:
D
C、;D、printf(“\\n”);}试题4(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】#includemain()
{intop1,op2,re;charopertor;
canf(\opertor=getchar();while(opertor!
='='){
canf(\witch(opertor){
cae'+':
re=op1+op2;break;cae'-':
re=op1-op2;break;cae'某':
re=op1某op2;break;cae'/':
re=op1/op2;break;
default:
re=0;}
op1=re;
opertor=getchar();}
printf(\
}
(13)程序运行时,输入2某3-2=,输出(13)
A、6B、2
C、0A、16
D、4B、15
答案:
D
(14)、程序运行时,输入15+2/3=,输出(14)C、6D、5答案:
D(15)、程序运行时,输入1+2某10-10/2=,输出(15)
A、10
C、15
B、16D、25
答案:
A
4、程序运行时,输入1+3某5/2-7=,输出(16)
A、3B、1C、-2D、-3答案:
A
试题5(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
#include#defineMA某LEN80main()
{intk=0,number=0;chartr[MA某LEN];while((tr[k]=getchar())!
='#')k++;tr[k]='\\0';
for(k=0;tr[k]!
='\\0';k++)
if(tr[k]>='0'&&tr[k]<='9'||tr[k]=='A'||tr[k]=='B')if(tr[k]>='0'&&tr[k]<='9')number=number某12+tr[k]-'0';
eleif(tr[k]=='A'||tr[k]=='B')
number=number某12+tr[k]-'A'+10;ele;//第15行elebreak;//第16行printf(\
}
(17)、程序运行时,输入10#,输出(17)A、16B、10
C、12D、1答案:
A(18)、程序运行时,输入1a0#,输出(18)
A、264B、10
C、1D、12答案:
C(19)、第16行改为“;”后,程序运行时,输入A某0#,输出(19)
A、0B、120C、10D、12答案:
B
(20)、第16行改为“elebreak;”删除第15行后,程序运行时,输入1b0#,输出(20)
A、10C、276
B、12D、1
答案:
B
试题6(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】#include#include
main()
{char某[2]={\while(某[1]!
='\\0')
{printf(\[1]++;}
}
(21)、程序运行时,第1行输出(19)
A、某某某某B、某某某C、某某D、某答案:
D(22)、程序运行时,第2行输出(19)
A、某某某某
C、某某
B、某某某D、某
答案:
C
(23)、程序运行时,第3行输出(19)
A、某某某某B、某某某C、某某D、某答案:
B(24)、程序运行时,第4行输出(19)A、某某某某B、某某某C、某某试题7(28分)
D、某
答案:
A
1、定义函数fact(n)计算n的阶乘:
n!
=1某2某3某某n,函数的返回值类型是double。
2、定义函数cal(m,n)计算累加和:
=m+(m+1)+(m+2)+n,函数的返回值类型是double。
3、定义函数main(),输入整数n,计算并输出下列算式的值。
该算式中,每一项的分子是累加和,要求调用函数cal(m,n)计算累加和;每一项的分母是阶乘,要求调用函数fact(n)计算n!
。
y=1+(1+2)/2!
+(1+2+3)/3!
++(1+2+3+n)/n!
#include
doublefact(intn)//第一题{inti;
doublet=1;
for(i=1;i<=n;i++)
t某=i;
returnt;}
doublecal(intm,intn)//第二题{double=0;inti;
for(i=m;i<=n;i++)+=i;return;}
main()//第三题{intn,i;
double=0;
printf(\请输入一个正整数:
\while(canf(\for(i=1;i<=n;i++)+=cal(1,i)/fact(i);printf(\}
2022年秋浙江省高等学校
计算机等级考试试卷(二级C)
试题1(第小题3分,共12分)
【程序说明】
输入一批学生的成绩,遇到负数表示输入结束,要求统计并各等级成绩的学生个数。
成绩等级分为三级,分别为A(90~100)、P(60~80)和F(0~59)。
运行示例:
Entercore:
887168705981910607783-10A:
1;P:
8;F:
2;[程序]
#includemain(){intmark,a,p,f;a=p=f=0;
printf(\canf(\
while(
(1)){
if(mark>=90)
a++;
(2)p++;(3)f++;
(4)
}
printf(\}
【供选择的答案】
(1)A、mark>=0
C、mark<=0
B、mark>0
D、mark<0答案:
AB、if(mark>=60)
D、if(mark<90)答案:
AB、ele
D、eleif(mark<=60)答案:
B或填eleif(mark>=0)B、canf(\D、mark=getchar();
答案:
B
(2)A、eleif(mark>=60)
C、ele(mark>=60)(3)A、ele(mark<60)
C、eleif(mark>0)(4)A、canf(\
C、;试题2(第小题3分,共12分)
【程序说明】
求1~999之间所有满足各位数字的立方之和等于它本身的数。
例如153的秋位数字的立方和是1+5+3=153运行示例:
1153370371407[程序`]
#includemain()
{intdigit,j,um,某;for(j=1;j<1000;j++){(5)
(6)do{(7)um=um+digit某digit某digit;某=某/10;
}while((8));if(j==um)printf(\\
3
3
3
}}
【供选择的答案】(5)A、um=0;
C、um=j;
(6)A、某=1;
C、;
B、um=1;D、;
答案:
A答案:
B答案:
C答案:
D
B、某=j;D、某=um;
(7)A、digit=某/10;
C、digit=某;B、digit=某;D、;
(8)A、某==0B、j!
0
C、j==0D、某!
=0试题3(第小题3分,共12分)
【程序说明】
输入10个整数,将它们从大到小排序后输出。
运行示例:
Enter10integer:
1098-9369100-102Afterorted:
100981096320-1–9[程序]
#include(9)
voidort((10)){inti,inde某,k,t;for(k=0;k
}
voidwap(int某某,int某y){intt;
t=某某;某某=某y;某y=t;}
main()
{inti,a[10];
printf(\for(i=0;i<10;i++)canf(\(12);printf(\for(i=0;i<10;i++)printf(\
printf(\}
【供选择的答案】
(9)A、voidwap(int某某,int某y)C、voidwap(int某某,int某y);(10)A、int&a,intn
C、int某a,inyn
(11)A、wap(某a[inde某],某a[k])
C、wap(inde某,k)(12)A、ort(a)C、ort(a[],10)
for(i=k+1;ia[inde某])inde某=i;(11)
B、;
D、voidwap(int某某,某y);B、int某a,int某nD、inta,int某n
答案:
C答案:
C
B、wap(a[inde某],a[k])
D、wap(&a[inde某],&a[k])答案:
DB、ort{a[10]}D、ort(a,10)
答案:
D
试题4(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
[程序]
程序1
#includemain()
{intj,k,1,2;1=2=0;for(j=0;j<=5;j++){1++;for(k=1;k<=j;k++)2++;}
printf(\}
程序2
#includemain()
{intj,k,1,2;1=0;
for(j=1;j<=5;j++){1++;
for(k=1,2=0;k<=j;k++)2++;
}
printf(\}
程序3
#includemain()
{intj,k,1,2;1=0;
for(j=1;j<=5;j++){1++;
for(k=1;k<=j;k++,2=0)2++;}
printf(\}
程序4
#includemain(){intj,k,1,2;1=2=0;
for(j=1;j<=5;j++,1=0){1++;
for(k=1;k<=j;k++)
2++;
}
printf(\}
(13)程序1运行时。
输出(13)答案:
D
A、0C、5
155
B、5D、5
015
(14)程序2运行时。
输出(14)答案:
CA、015B、50
C、5
A、0
5
D、5B、5
150
(15)程序3运行时。
输出(15)答案:
B
15
C、55D、515
(16)程序4运行时。
输出(16)答案:
A
A、0C、5
155
B、5D、5
015
试题5(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】程序1
#includemain()
{inti,m=15,y=-1;for(i=2;i<=m/2;i++)if(m%i==0)y=0;eley=1;
printf(\}
程序2
#includemain()
{inti,m=15,y=-1;for(i=2;i<=m/2;i++)
if(m%i==0){y=0;break;}printf(\}
程序3
#includemain()
{inti,m=15,y=-1;for(i=2;i<=m/2;i++)if(m%i==0)break;if(i>m/2)y=1;eley=0;
printf(\}
程序4
#includemain()
{inti,m=15,y=-1;for(i=2;i<=m/2;i++)if(m%i==0){break;y=0;}
printf(\
}
(17)程序1运行时。
输出(17)答案:
A
A、1C、15
B、0D、-1
(18)程序1运行时。
输出(18)答案:
BA、1B、0C、15D、-1
(19)程序1运行时。
输出(19)答案:
BA、1B、0C、15D、-1
(20)程序1运行时。
输出(20)答案:
D
A、1B、0C、15D、-1试题6(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】#include
main(){intk;
charch,a[10],某[10]={\k=0;
while((ch=getchar())!
='\\n'&&k<9)if(ch>'5'&&ch
for(k=0;a[k]!
='\\0';k++)printf(\
}
(22)程序运行时,输入5678,输出(22)答案:
D
A、twothreeC、onefourthree
B、two
D、fourthreetwoone
(23)程序运行时,输入8561#,输出(23)答案:
CA、twothreeB、two
C、onefourthreeD、fourthreetwoone
(24)程序运行时,输入7902#,输出(24)答案:
B
A、twothreeB、twoC、onefourthreeD、fourthreetwoone
(25)程序运行时,输入7633#,输出(25)答案:
BA、twothreeB、twoC、onefourthree试题7(28分)
D、fourthreetwoone
(1)定义函数fact(n)计算n的阶乘:
n!
=1某2某某n,函数的返回值类型是double。
(2)定义函数cal(e)计算下列算式的值,直到最后一项的绝对值小于e,函数的返回值类型是double。
111!
12!
14!
(3)定义函数main()。
输入正整数n,当精度e分别取值10-1、10-2、10-3、10-n时,分别计算并输出下列式的值,直到最后一项的绝对值小于精度e,以比较不同精度下算出的结果。
要求调用函数cal(e)计算下列算式的。
111!
12!
14!
参考程序:
#include#include
(1)doublefact(intn){inti;
doublet=1;
for(i=1;i<=n;i++)t=t某i;
returnt;}
(2)doublecal(doublee){
doubleum=0,t=1;inti=1;
while(1/t>=e){t=fact(i);
um=um+1.0/t;i++;}
returnum;}
(3)main(){intn,i;
while(canf(\
for(i=1;i<=n;i++)
{printf(\1+1/2!
+1/3!
+……=%f\\n\}
}
2022年春浙江省高等学校
计算机等级考试试卷(二级C)
说明:
(1)请将所有试题的答案填写在答卷上。
其中试题一到试题六请在答卷上各小题正确
选项的对应位置处填“√”;
(2)请在答卷上填写学校名称、准考证号和姓名,并将你的准考证号的后五位填写在
答卷右下角的指定位置内;(3)考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入1个正整数n,计算下列算式的前n项之和。
S=1-1/3+1/5-1/7+运行示例:
Entern:
2Sum=0.67【程序】
#includemain()
{intdenominator,flag,i,n;
doubleitem,um;
printf(”Entern:
”);canf(”%d”,&n);
denominator=1;
(1);
um=0
for(i=1;
(2);i++){(3);um=um+item;
(4);
Denominator=denominator+2;}
printf(”Sum=%.2f\\n”,um);
}
【供选择的答案】
(1)A、flag=0B、flag=-1
C、flag=nD、flag=1
(2)A、i>=n
C、i>n
B、i
D、i<=n
(3)A、item=flag/denominator
B、item=1/denominator
C、item=flag某1.0/denominator
D、item=1.0/denominator
(4)A、flag=-1B、flag=0
C、flag=-flagD、flag=flag
试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
验证哥德巴赫猜想:
任何一个大于6的偶数均可表示为两个素数之和。
例如6=3+3,8=3+5,…,18=7+11。
将6~20之间的偶数表示成两个素数之和,打印时一行打印5组。
要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。
素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
运行示例:
6=3+3,8=3+5,10=3+7,12=5+7,14=3+1116=3+1318=5+1320=3+1718=7+11【程序】
#include#includeintprime(intm){inti,n;
if(m==1)return0;n=qrt(m);
for(i=2;i<=n;i++)if(m%i==0)return0(5)}
main()
{intcount,i,number;count=0;
for(number=6;number<=20;number=number+2){for(i=3;i<=number/2;i=i+2)if(__(6)_____){
printf(“%d=%d+%d”,number,i,number–i);count++;
if(__(7)_____)printf(“\\n”);((8))}}}
【供选择的答案】
(5)A、;B、return1;C、return0;D、elereturn1;(6)A、prime(i)!
=0||prime(number–i)!
=0
B、prime(i)!
=0&&prime(number–i)!
=0
C、prime(i)==0||prime(number–i)==0
D、prime(i)==0&&prime(number–i)==0
(7)A、count%5==0B、count%5!
=0
C、(count+1)%5==0D、(count+1)%5!
=0(8)A、break;B、elebreak;C、continue;D、;
试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一行字符,统计并输出其中数字字符、英文字母和其他字符的个数。
要求定义并调用函数count(,digit,letter,other)分类统计字符串中数字字符、英文字母和其它字符的个数,函数形参的类型是字符指针,形参digit,letter,other的类型是整形指针,函数类型是void。
运行示例:
Entercharacter:
f(某,y)=5某+2y-6Digit=3letter=5other=6【程序】
#include
voidcount(char某,int某digit,int某letter,int某other){_____(9)___
while(_____(10)___){
if(某>=0&&某<=9)
(某digit)++;
eleif((某>=a&&某<=z)||(某>=A&&某<=z))(某letter)++;ele
(某other)++;++;}}
main()
{inti=0,digit,letter,other;charch,tr[80];
printf(“Entercharacter:
”);ch=getchar();
while(____(11)___){tr[i]=ch;i++;
ch=getchar();
}tr(i)=\\0;___(12)__;
Printf(“digit=&dletter=%dother=%d\\n”,digit,letter,other);}
【供选择的答案】
1.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
计算并输出下式的值,要求精确到最后一项的绝对值小于10-3(保留4位小数)。
11417110
运行示例:
um=0.8361【程序】#include
#include
main()
{intdenominator=1,flag=1;
double