浙江省计算机二级C语言模拟试题Word下载.docx
《浙江省计算机二级C语言模拟试题Word下载.docx》由会员分享,可在线阅读,更多相关《浙江省计算机二级C语言模拟试题Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
【程序说明】下列程序运行时,输入n个学生的姓名和3门功课成绩,然后根据3门功课的平均成绩从高分到低分显示每个学生的姓名,3门功课成绩以及平均成绩.
#include
(5)
{
struct
student
char
name[9];
a[3];
float
v;
}
temp,*s;
i,j,k;
scanf("
%d"
&
n);
s=(student*)malloc(n*sizeof(student));
for(
(6)
)
%s"
s[i].name);
s[i].v=0;
for(j=0;
j<
3;
j++)
s[i].a[j]);
(7)
for(i=0;
is[k].v)
k=j;
temp=s[i];
s[i]=s[k];
s[k]=temp;
i
s[i].name,s[i].a[0],s[i].a[1],s[i].a[2],s[i].v);
A,#include
B,#include
C,#include
D,#include
A,i=1;
=n;
i++
B,i=1;
C,i=0;
i0;
--i
A,s[i].v=s[i].v+s[i].a[j]
B,s[i].v+=s[i].a[j]/3
C,s+i->
v=s+i->
v+s+i->
a[j]/3
D,s+i->
v+=s+i->
a[j]/3
(8)
A,j=i-1;
j
C,j=i+1;
j试题3(每小题3分,共12分)
从键盘输入一批以
-1结束的整数,将其中的奇数写入当前目录下的文本文件res.txt.
x;
(9)
if((fp=fopen("
res.txt"
"
w"
))==NULL)
不能打开文件"
);
exit(0);
&
x);
while(
(10)
){
if(x%2!
=0)
(11)
(12)
fclose(fp);
A,FILE
fp
B,FILE
*fp
C,file
D,file
*fp
A,x
==
-1
B,feof(fp)
C,!
feof(fp)
D,x!
=-1
A,fprintf(fp,
"
%d
x)
B,printf(
x)
C,fprintf("
x,
fp)
D,break
A,printf("
B,fscanf(fp,"
D,scanf("
试题4(每小题3分,共12分)
阅读下列程序并回答问题,在每个小题提供的若干可选答案中,挑选一个正确的答案.
stdio.h"
main(
)
j,
k,
n,
s,
a[6][6];
for(k=0;
k
a[k][j]=j*n+k;
a[0][1]=%d\n"
a[0][1]);
s=0;
for
(k=0;
s
+=a[k][k];
sum1=%d\n"
s);
+=a[n-k-1][k];
sum2=%d\n"
+=a[k][2];
sum3=%d\n"
(13)程序运行时,输入3后,第一行输出____
A
a[1][0]=6
B
a[0][1]=6
C
a[1][0]=3
D
a[0][1]=3
(14)
程序运行时,输入3后,第二行输出______
sum1=22
sum1=21
sum1=12
sum1=11
(15)
程序运行时,输入6后,第一行输出______
sum2=210
sum2=211
sum2=200
sum2=120
(16)
程序运行时,输入6后,第二行输出______
sum3=279
sum3=927
sum3=297
sum3=277
试题5(每小题3分,共12分)
i=0,n;
s[10]="
95682h01"
n=0;
s[i]!
=’\0’;
i++)
if(s[i]=’0’)
n=n*10+(s[i]-’0’);
%d\n"
n);
else
break;
(17)程序运行时,第2行输出____(17)____.
A,9
B,95
C,5
D,59
(18)程序运行时,第3行输出____(18)____.
A,956
B,659
C,965
D,96
(19)程序运行时,第4行输出____(19)____.
A,9586
B,5896
C,5698
D,9568
(20)程序运行时,第5行输出____(20)____.
A,92568
B,95682
C,68295
D,58629
试题6(每小题3分,共12分)
student
*
name;
*sex;
age;
score;
};
initial(struct
st[],
*xm[
],
*xb[
],int
nl[],float
cj[])
i;
(i=0;
4;
st[i].name
xm[(i+3)%4];
st[i].sex
xb[(i+3)%4];
st[i].age
nl[(i+3)%4];
st[i].score
cj[(i+3)%4];
show(struct
st[])
学生信息如下:
\n"
姓名:
%s\t性别:
%s\t年龄:
%d\t成绩:
%f\n"
st[i].name,st[i].sex,st[i].age,st[i].score);
st[4];
xm[
]={"
张三"
李四"
小周"
小吴"
男"
女"
nl[]={18,17,17,18};
cj[]={85,86,80,84};
initial(st,
xm,
xb,nl,cj);
show
(st);
(21)程序运行时,第1行输出____(21)____.
A,姓名:
小吴
性别:
女
年龄:
18
成绩:
84.000000
B,姓名:
李四
男
17
86.000000
C,姓名:
张三
85.000000
D,姓名:
小周
80.000000
(22)程序运行时,第2行输出____(22)____.
(23)程序运行时,第3行输出____(23)____.
(24)程序运行时,第4行输出____(24)____.
试题7
(14分)
编写程序,求出数组a中各相邻两个元素的和,并将这些和存放在数组
b中,按每行3个元素的形式输出.
试题8
编写程序,找出100~999之间所有的Armstrong数.所谓Armstrong数是指这个3位数各位上数字的立方和等于自身.例如:
371=3*3*3+7*7*7+1*1*1,那么371就是Armstrong数.
练习题
二、按要求回答问题(每小题4分)
1.写出下列循环语句所对应的数学式子。
n=55;
t=1;
do{
t+=n;
n-=2;
while(n>
0);
2.写出程序实现的数学模型。
#include<
stdio.h>
voidmain()
{floatx,y;
printf("
enterx:
"
scanf("
%f"
if(x<
0.0)y=0.0;
elseif((x<
5.0)&
(x!
=2.0))y=1.0/(x+2.0);
elseif(x<
10.0)y=1.0/x;
elsey=10.0;
\n%f\n”,y);
}
3.运行下面程序后的w值为多少?
intf(intx)
{inty=0;
staticz=3;
y++;
z++;
return(x+y+z);
}
{intw=2,k;
for(k=1;
k<
k++)w=f(w);
w);
4.简述下列程序完成的功能
{inta[10],*p,*s,i;
for(i=0;
10;
i++)
scanf(%d”,a+i);
for(p=a,s=a;
p-a<
p++)
if(*p>
*s)s=p;
printf(“max=%d,index=%d\n”,*s,s-a);
5.简述下列程序完成的功能。
{char
ch;
ch=getchar();
if(ch>
="
A"
ch<
Z"
)ch+=32;
=97&
=122)ch-='
a'
-'
A'
;
%c"
ch);
6.
写出下列程序的结果。
include"
{intx[]={1,3,5};
ints=1,k=0,*p=x;
for(;
k+=2)
s*=*(p+k);
7.下列程序的执行结果
intf(inth)
{switch(h)
{case0:
return0;
case1:
case2:
return1;
return-10;
{intk;
k=f(-1);
printf(“%d\n”,k);
8.下列程序段运行后x的值是多少?
a=b=c=0;
x=500;
if(!
a)x--;
elseif(b)
if(c)x=3;
elsex=4;
9.简述下列程序的功能
voidf(int*s,intn1,intn2)
{inti,j,t;
i=n1;
j=n2;
while(i<
j)
{t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
i++;
j--;
10.执行以下程序段后,m的值是多少。
a[]={2,4,3,1,10};
intm=10,k,*p=a;
5;
k++)
m=(*(p+k)<
m)?
*(p+k):
m);
11.写出下面程序的运行结果。
{inti=1;
while(i<
10)
if(++i%3==2)continue;
elseprintf("
%d"
i);
}
12.写出下面程序的运行结果。
intfun(inta,intb)
{b=a+b;
returnb;
voidmain()
{intx=6,y=7,z=8,r;
r=fun((x--,y++,x+y),z--);
%d
%d\n"
x,y,z,r);
13.写出程序的运行结果
intd=1;
intfun(intp)
{staticintd=3;
d+=p;
%3d"
d);
return(d);
{printf("
%3d\n"
fun(3+fun(d)));
14.写出程序的输出结果。
voidmain()
(inti,j;
for(i=6;
i>
0;
i--)
{
for(j=0;
10-i;
j++)printf("
=2*i-1;
*"
15.写出程序的输出结果。
8;
#"
16.写出下列程序段的输出结果。
a[]="
language"
b[]="
programe"
char*p1=a,*p2=b;
intk;
7;
if(*(p1+k)==*(p2+k))putchar(*(p1+k));
17.voidmain()
{intn1,n2;
n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
n1);
若键盘输入12345,则程序的运行结果是多少?
18.阅读程序,回答问题。
{inta,b,m,n;
%d%d"
a,&
b);
m=1;
n=1;
if(a>
0)m=m+n;
if(a<
b)n=2*m;
elseif(a==b)n=5;
elsen=m+n;
m=%d
n=%d\n"
m,n);
问题:
当输入为:
-2时,程序的运行结果是
19.调用fun函数后,由指针变量p所指向的数组中的十个元素值是多少?
voidfun(int*p)
{int k;
for(k=1;
=10;
k++)*(p+k-1)=k+10;
k++)*(p+9-k)=*(p+k);
20.写出程序的输出结果
#include"
ast(intx,inty,int*cp,int*dp)
{*cp=x=x+y;
*dp=y=x-y;
inta,b,c,d;
a=4;
b=3;
ast(a,b,&
c,&
d);
printf(“%d
%d\n”,a,b,c,d);
三.编写程序(每小题10分)
1.求分段函数值。
2.求S=X-X2/2+X3/3-X4/4+…-X10/N
3.求S=1!
+(1!
+2!
)+(1!
+3!
)+…(1!
+…+8!
)
4.用台劳级数求e的近似值,直到最后一项小于10-6
e=1+1/1!
+1/2!
+1/3!
+……
5.求出100~1000之间能被7整除的数,要求以一行8个数的形式输出这些数,最后输出这些数的总和。
6.任意输入x[10][10]个数,找出并输出其中的最大数和最小数,以及它们的下标。
7.任意输入a[N][N]个数,求出行下标加列下标之和为奇数的这些元素之和。
8.任意输入50个数,求出其中的偶数之和、奇数之和,以及分别求出它们的个数。
9.编程对数组A[N]中的数据进行从小到大顺序排列。
10.编写一个函数,将两个字符串连接起来。
(不能用strcat函数)。
11.写一个判断素数的函数,并要求在主函数中输入一个整数并输出相应的判断信息("
YES"
或者"
NO"
)。
12.设数组A[n]中是一组有序数,编程完成从键盘任意输入一个数x,若数组A[n]中存在x则将它们删除,并将数组长度压缩(即后面元素向前移动,元素顺序不能改变。
不能引人新数组);
若数组A[n]中不存在x则显示“not
found!
”。
13.设有2个字符串S1与S2,编程实现将S1中的第n个到第m个字符的内容复制到S2串的尾部。
(n、m由键盘输入)
14.编写一个函数intcomp(char*s1,char*s2),比较字符串S1和S2的大小,若S1大于S2则返回1,若S1等于S2则返回0,若S1小于S2则返回-1。
(不能用strcmp函数)
15.编写一函数:
intsubstring(char*str,char*sub),判断字符串sub是否是字符串str的子串,若是子串,则返回子串的位置,否则返回-1。