素数就是只能被1和自身整除的正整,1不是素,2是素数。
运行示例:
Enterm,n:
110
count=4,sum=17
【程序】
#include
#include
intprime(intm)
{inti,n;
if(m==1)return(5);
n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0)return(6);
return(7);
}
main()
{intcount=0,i,m,n,sum=0;
printf("Enterm,n:
");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
if((8)){
sum+=i;
count++;
}
printf("count=%d,sum=%d\n",count,sum);
}
【供选择的答案】
(5)A、1B、m
C、m==1D、0答案:
D
(6)A、mB、1
C、0D、n答案:
C
(7)A、mB、1
C、0D、i==n答案:
B
(8)A、prime(i)!
=0B、prime(i)==0
C、1=prime(i)D、!
prime(i)答案:
A
试题3(每小题3分,共12分)
【程序说明】
输入一个2*3的二维数组,找出最大值以及它的行下标和列下标,并输出该结果。
运行示例:
Enterarray(2*3):
3210-96-1
max=a[0][2]=10
3210
-96-1
#include
main()
{intcol,row,i,j;
inta[2][3];
printf("Enterarray(2*3):
");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",(9));
(10);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(a[i][j]>a[row][col])
{(11)
}
printf("max=a[%d][%d]=%d\n",row,col,a[row][col]);
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
printf("%4d",a[i][j]);
(12)
}
【供选择的答案】
(9)A、&a[i][j]B、&a[j][i]
C、a[i][j]D、a[j][i]答案:
A
(10)A、row=col=2;B、row=col=0;
C、a[row][col]=0;D、a[row][col]=-1;答案:
B
(11)A、row=j;col=i;B、a[row][col]=a[i][j];
C、row=i;col=j;D、a[row][col]=a[j][i];答案:
C
(12)A、printf(“\n”)};B、}printf(“\n”);
C、;D、printf(“\n”);}答案:
D
试题4(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
#include
main()
{intop1,op2,res;
charopertor;
scanf("%d",&op1);
opertor=getchar();
while(opertor!
='=')
{
scanf("%d",&op2);
switch(opertor)
{
case'+':
res=op1+op2;break;
case'-':
res=op1-op2;break;
case'*':
res=op1*op2;break;
case'/':
res=op1/op2;break;
default:
res=0;
}
op1=res;
opertor=getchar();
}
printf("%d\n",res);
}
(13)程序运行时,输入2*3-2=,输出(13)。
A、6B、2
C、0D、4答案:
D
(14)、程序运行时,输入15+2/3=,输出(14)。
A、16B、15
C、6D、5答案:
D
(15)、程序运行时,输入1+2*10-10/2=,输出(15)。
A、10B、16
C、15D、25答案:
A
4、程序运行时,输入1+3*5/2-7=,输出(16)。
A、3B、1
C、-2D、-3答案:
A
试题5(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
#include
#defineMAXLEN80
main()
{intk=0,number=0;
charstr[MAXLEN];
while((str[k]=getchar())!
='#')
k++;
str[k]='\0';
for(k=0;str[k]!
='\0';k++)
if(str[k]>='0'&&str[k]<='9'||str[k]=='A'||str[k]=='B')
if(str[k]>='0'&&str[k]<='9')
number=number*12+str[k]-'0';
elseif(str[k]=='A'||str[k]=='B')
number=number*12+str[k]-'A'+10;
else;//第15行
elsebreak;//第16行
printf("%d\n",number);
}
(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、120
C、10D、12答案:
B
(20)、第16行改为“elsebreak;”删除第15行后,程序运行时,输入1b0#,输出(20)。
A、10B、12
C、276D、1答案:
B
试题6(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
#include
#include
main()
{char*s[2]={"****","****"};
while(*s[1]!
='\0')
{printf("%s\n",s[0]+strlen(s[1])-1);
s[1]++;
}
}
(21)、程序运行时,第1行输出(19)。
A、****B、***
C、**D、*答案:
D
(22)、程序运行时,第2行输出(19)。
A、****B、***
C、**D、*答案:
C
(23)、程序运行时,第3行输出(19)。
A、****B、***
C、**D、*答案:
B
(24)、程序运行时,第4行输出(19)。
A、****B、***
C、**D、*答案:
A
试题7(28分)
1、定义函数fact(n)计算n的阶乘:
n!
=1*2*3*……*n,函数的返回值类型是double。
2、定义函数cal(m,n)计算累加和:
s=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)//第二题
{doubles=0;
inti;
for(i=m;i<=n;i++)
s+=i;
returns;
}
main()//第三题
{intn,i;
doubles=0;
printf("请输入一个正整数:
");
while(scanf("%d",&n),n<=0);
for(i=1;i<=n;i++)
s+=cal(1,i)/fact(i);
printf("%f",s);
}
2008年秋浙江省高等学校
计算机等级考试试卷(二级C)
试题1(第小题3分,共12分)
【程序说明】
输入一批学生的成绩,遇到负数表示输入结束,要求统计并各等级成绩的学生个数。
成绩等级分为三级,分别为A(90~100)、P(60~80)和F(0~59)。
运行示例:
Enterscores:
887168705981910607783-10
A:
1;P:
8;F:
2;
[程序]
#include
main()
{intmark,a,p,f;
a=p=f=0;
printf("Enterscores:
");
scanf("%d",&mark);
while(
(1))
{
if(mark>=90)
a++;
(2)p++;
(3)f++;
(4)
}
printf("A:
%d;P:
%d;F:
%d;\n",a,p,f);
}
【供选择的答案】
(1)A、mark>=0B、mark>0
C、mark<=0D、mark<0答案:
A
(2)A、elseif(mark>=60)B、if(mark>=60)
C、else(mark>=60)D、if(mark<90)答案:
A
(3)A、else(mark<60)B、else
C、elseif(mark>0)D、elseif(mark<=60)答案:
B或填elseif(mark>=0)
(4)A、scanf("%d",mark);B、scanf("%d",&mark);
C、;D、mark=getchar();答案:
B
试题2(第小题3分,共12分)
【程序说明】
求1~999之间所有满足各位数字的立方之和等于它本身的数。
例如153的秋位数字的立方和是13+53+33=153
运行示例:
1153370371407
[程序`]
#include
main()
{intdigit,j,sum,x;
for(j=1;j<1000;j++){
(5)
(6)
do{
(7)
sum=sum+digit*digit*digit;
x=x/10;
}while((8));
if(j==sum)printf("%d",sum);
}
}
【供选择的答案】
(5)A、sum=0;B、sum=1;
C、sum=j;D、;答案:
A
(6)A、x=1;B、x=j;
C、;D、x=sum;答案:
B
(7)A、digit=x/10;B、digit=x;
C、digit=x%10;D、;答案:
C
(8)A、x==0B、j!
0
C、j==0D、x!
=0答案:
D
试题3(第小题3分,共12分)
【程序说明】
输入10个整数,将它们从大到小排序后输出。
运行示例:
Enter10integers:
1098-9369100-102
Aftersorted:
100981096320-1–9
[程序]
#include
(9)
voidsort((10))
{inti,index,k,t;
for(k=0;kindex=k;
for(i=k+1;iif(a[i]>a[index])index=i;
(11)
}
}
voidswap(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inti,a[10];
printf("Enter10integers:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
(12);
printf("Aftersorted:
");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
【供选择的答案】
(9)A、voidswap(int*x,int*y)B、;
C、voidswap(int*x,int*y);D、voidswap(int*x,*y);答案:
C
(10)A、int&a,intnB、int*a,int*n
C、int*a,inynD、inta,int*n答案:
C
(11)A、swap(*a[index],*a[k])B、swap(a[index],a[k])
C、swap(index,k)D、swap(&a[index],&a[k])答案:
D
(12)A、sort(a)B、sort{a[10]}
C、sort(a[],10)D、sort(a,10)答案:
D
试题4(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
[程序]
程序1
#include
main()
{intj,k,s1,s2;
s1=s2=0;
for(j=0;j<=5;j++){
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf("%d%d",s1,s2);
}
程序2
#include
main()
{intj,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1,s2=0;k<=j;k++)
s2++;
}
printf("%d%d",s1,s2);
}
程序3
#include
main()
{intj,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1;k<=j;k++,s2=0)
s2++;
}
printf("%d%d",s1,s2);
}
程序4
#include
main()
{intj,k,s1,s2;
s1=s2=0;
for(j=1;j<=5;j++,s1=0){
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf("%d%d",s1,s2);
}
(13)程序1运行时。
输出(13)。
答案:
D
A、015B、50
C、55D、515
(14)程序2运行时。
输出(14)。
答案:
C
A、015B、50
C、55D、515
(15)程序3运行时。
输出(15)。
答案:
B
A、015B、50
C、55D、515
(16)程序4运行时。
输出(16)。
答案:
A
A、015B、50
C、55D、515
试题5(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
程序1
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0)y=0;
elsey=1;
printf("%d",y);
}
程序2
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0){y=0;break;}
printf("%d",y);
}
程序3
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0)break;
if(i>m/2)y=1;
elsey=0;
printf("%d",y);
}
程序4
#include
main()
{inti,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0){break;y=0;}
printf("%d",y);
}
(17)程序1运行时。
输出(17)。
答案:
A
A、1B、0
C、15D、-1
(18)程序1运行时。
输出(18)。
答案:
B
A、1B、0
C、15D、-1
(19)程序1运行时。
输出(19)。
答案:
B
A、1B、0
C、15D、-1
(20)程序1运行时。
输出(20)。
答案:
D
A、1B、0
C、15D、-1
试题6(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
#include
main()
{intk;
charch,a[10],*s[10]={"one","two","three","four"};
k=0;
while((ch=getchar())!
='\n'&&k<9)
if(ch>'5'&&ch<'8')a[k++]=ch;
a[k]='\0';
for(k=0;a[k]!
='\0';k++)
printf("%s",s['9'-a[k]-1]);
}
(22)程序运行时,输入5678,输出(22)。
答案:
D
A、twothreeB、two
C、onefourthreeD、fourthreetwoone
(23)程序运行时,输入8561#,输出(23)。
答案:
C
A、twothreeB、two
C、onefourthreeD、fourthreetwoone
(24)程序运行时,输入7902#,输出(24)。
答案:
B
A、twothreeB、two
C、onefourthreeD、fourthreetwoone
(25)程序运行时,输入7633#,输出(25)。
答案:
B
A、twothreeB、two
C、onefourthreeD、fourthreetwoone
试题7(28分)
(1)定义函数fact(n)计算n的阶乘:
n!
=1*2*……*n,函数的返回值类型是double。
(2)定义函数cal(e)计算下列算式的值,直到最后一项的绝对值小于e,函数的返回值类型是double。
(3)定义函数main()。
输入正整数n,当精度e分别取值10-1、10-2、10-3……、10-n时,分别计算并输出下列式的值,直到最后一项的绝对值小于精度e,以比较不同精度下算出的结果。
要求调用函数cal(e)计算下列算式的。
参考程序:
#include
#include
(1)doublefact(intn)
{inti;
doublet=1;
for(i=1;i<=n;i++)
t=t*i;
returnt;
}
(2)doublecal(doublee)
{
doublesum=0,t=1;
inti=1;
while(1/t>=e)
{t=fact(i);
sum=sum+1.0/t;
i++;
}
returnsum;
}
(3)main()
{intn,i;
while(scanf("%d",&n),n<=0);
for(i=1;i<=n;i++)
{printf("i=%d1+1/2!
+1/3!
+……=%f\n",i,cal(pow(10,-i)));
}
}
2009年春浙江省高等学校
计算机等级考试试卷(二级C)
说明:
(1)请将所有试题的答案填写在答卷上。
其中试题一到试题六请在答卷上各小题正确选项的对应位置处填“√”;
(2)请在答卷上填写学校名称、准考证号和姓名,并将你的准考证号的后五位填写在答卷右下角的指定位置内;
(3)考试时间为90分钟。
试题1(每小题3分,共12分)