浙江省计算机等级二级考试C语言机考题库.docx
《浙江省计算机等级二级考试C语言机考题库.docx》由会员分享,可在线阅读,更多相关《浙江省计算机等级二级考试C语言机考题库.docx(29页珍藏版)》请在冰豆网上搜索。
浙江省计算机等级二级考试C语言机考题库
二级考试(C语言)上机部分试题
1.三个数比较大小。
输入三个整数,按由大到小的顺序输出这三个数。
#include
voidswap(int*pa,int*pb)
{/*交换两个数的位置*/
inttemp;temp=*pa;*pa=*pb;*pb=temp;}
voidmain()
{inta,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
if(a>b)swap(&a,&b);
if(b>c)swap(&b,&c);
if(a>b)
swap(&a,&b);
printf("%d,%d,%d",a,b,c);}
2.表达式求和。
将计算结果以格式“%。
6f”写入到考生文件夹中
#include#include
voidmain()
{FILE*fp;
floatn=1,t=1,pi=0;
inti;
i=1;
while(fabs(t)>=1e-6)
{pi=pi+t;i=-i;n=n+2;t=i/n;}
fp=fopen("Design1.dat","w");
fprintf(fp,"%.6f",4*pi);
fclose(fp);}
运行结果:
3.141594
3.字母后移循环输出。
输入的一个小写字母,将字母循环后移5个位置后输出。
#include
voidmain()
{charc;c=getchar();
If(c>='a'&&c<'v')
c=c+5;
else
if(c>='v'&&c<='z')
c=c-21;
putchar(c);}
4.求满足条件的数。
#include
#include
voidmain()
{floaty=1.05;intn=1;FILE*p;
while(!
(pow(y,n)<1e6&&pow(y,n+1)>1e6))
n++;
p=fopen("Design2.dat","w");
fprintf(p,"%d,%.0f",n,pow(1.05,n));
fclose(p);}
运行结果:
283,992137
5.求满足条件的数。
输入整数n(n>0),求m使得2的m次方小于或等于n,
#include
voidmain()
{intm=0,t=1,n;
while(scanf("%d",&n),n<=0);
while(!
(t<=n&&t*2>=n)){
t=t*2;
m++;}
printf("%d\n",m);}
6.求平面点间的最短距离。
数组元素x[i]
#include#include
#definelen(x1,y1,x2,y2)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
voidmain()
{FILE*p;inti,j;floatc,minc;
floatx[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
floaty[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
minc=len(x[0],y[0],x[1],y[1]);
p=fopen("Design1.dat","w");
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if((c=len(x[i],y[i],x[j],y[j]))minc=c;
fprintf(p,"%f",minc);
fclose(p);}
运行结果:
1.457944
7.Fibonacci数列求值问题。
数列的第1此后各项值均为该项前二项之和。
#include
longf(intn);
voidmain()
{printf("%ld\n",f(30));}
longf(intn)
{if(n==1||n==2)
return1;
else
returnf(n-1)+f(n-2);}
运行结果:
832040
8.多项式求和问题。
计算多项式
#include#include
voidmain()
{FILE*p;inti;floatx=1.279,t=1,y=0;
floata[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
p=fopen("Design2.dat","w");
y=a[0];
for(i=1;i<10;i++)
{t=t*x;y=y+t*a[i];}
fprintf(p,"%f",y);
fclose(p);}
运行结果:
98.722542
9.整数转换为字符串。
用递归法将一个六位整数转换成字符串。
#include
voiditoa(longi,char*s)
{if(i==0)return;
/******1******/
*s='1'+i%10;//*s='0'+i%10
itoa(i/10,s-1);}
voidmain()
{longn;charstr[7]="";scanf("%ld",&n);
/******2******/
itoa(n,str+6);//itoa(n,str+5);
printf("%s",str);}
10.Fibonacci数列求值问题。
有数列
#include
voidmain()
{FILE*p;inti;floatf1=1.0,f2=2.0,t1=2.0,t2=3.0,s;floatf,t;
s=t1/f1+t2/f2;
p=fopen("Design1.dat","w");
for(i=3;i<40;i=i+2)
{t1=t1+t2;t2=t1+t2;f1=f1+f2;f2=f1+f2;s=s+t1/f1+t2/f2;}
fprintf(p,"%.6f",s);fclose(p);}
运行结果:
65.020950
11.数组赋值。
#include
voidmain()
{inta[10],b[10],i;
printf("\ninput10numbers:
");
for(i=0;i<10;i++)/*数组输入*/
scanf("%d",&a[i]);
for(i=1;i<10;i++)
b[i]=b[i]=a[i]+a[i-1];
for(i=1;i<10;i++)
{printf("%3d",b[i]);
if(i%3==0)printf("\n");
}
}12.求各点距离和。
#include#include
voidmain()
{FILE*p;inti;
floatx[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6};
floaty[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4};floats=0.0;
p=fopen("Design2.dat","w");
for(i=0;i<10;i++)
s=s+sqrt(pow(x[i]-1,2)+pow(y[i]-1,2));
fprintf(p,"%.6f",s);fclose(p);}
运行结果:
52.679447
13.十进制数转换为二进制数。
#include
voiddec2bin(intm)
{intbin[32],j;
for(j=0;m!
=0;j++)
{bin[j]=m%2;
m=m/2;}
for(;j!
=0;j--)
printf("%d",bin[j-1]);
}
voidmain()
{intn;
scanf("%d",&n);
dec2bin(n);}
14.求符合条件的数列之和。
#include
#include
voidmain()
{FILE*p;floats=0,a=81;inti;
p=fopen("Design2.dat","w");
for(i=1;i<=30;i++)
{s=s+a;
a=sqrt(a);}
fprintf(p,"%.3f",s);
fclose(p);}
运行结果:
121.336
15.在字符串中删除数字字符。
#include#include#include
voidf(char*s)
{inti=0;
while(s[i]!
='\0')
{if(isdigit(s[i]))____1____(s+i,s+i+1);//strcpy
___2___i++;}//else}
voidmain()
{charstr[80];
gets(str);f(str);puts(str);}
16.求满足条件的数。
#include
voidmain()
{FILE*p;floatf(floatx,floaty),min;
intx,y,x1,y1;
p=fopen("Design1.dat","w");
min=f(1,1);
for(x=1;x<=6;x++)
for(y=1;y<=6;y++)
if(f(x,y)fprintf(p,"%d,%d",x1,y1);
fclose(p);}
floatf(floatu,floatv)
{return(3.14*u-v)/(u+v);}
运行结果:
1,6
17.去除数组中的负数。
#include
voidf(int*a,int*m)
{inti,j;
for(i=0;i<*m;i++)
if(a[i]<0){
for(j=i--;j<*m-1;j++)a[j]=a[j+1];
_____1_____;//*m=*m-1;}}
voidmain()
{inti,n=7,x[7]={1,-2,3,4,-5,6,-7};
_______2_______;//f(x,&n);
for(i=0;iprintf("\n");}
运行结果:
1346
18.二维数组中的运算。
#include#include
voidmain()
{floata[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
FILE*p;floatx;inti,j;
for(i=0;i<3;i++)
{x=fabs(a[i][0]);
for(j=1;j<3;j++)
if(fabs(a[i][j]>x))x=fabs(a[i][j]);
for(j=0;j<3;j++)
a[i][j]=a[i][j]/x;}
p=fopen("Design2.dat","w");
for(i=0;i<3;i++){
for(j=0;j<3;j++)fprintf(p,"%10.6f",a[i][j]);
fprintf(p,"\n");}
fclose(p);}
运行结果:
0.3611110.7500001.000000
0.4255320.6382981.000000
0.7500001.0000000.317500
19.平面上各点距离计算。
#include#include#include
voidmain()
{inti,n;
/*****1*****/
structaxy{floatx,y;}a;//structaxy{floatx;floaty;}*a;
scanf("%d",&n);
a=(float*)malloc(n*2*sizeof(float));
for(i=0;i/*****2*****/
scanf("%f%f",a[i].x,a[i].y);//scanf("%f%f",&a[i].x,&a[i].y);
for(i=0;iif(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5)
printf("%f,%f\n",a[i].x,a[i].y);}
**试题本身有错误,a=(structaxy*)malloc(n*2*sizeof(float));
20.从a数组中找出偶数放入b数组。
#include
voidmain()
{FILE*p;
inti,j,temp,n=0;
inta[10]={7,6,20,3,14,88,53,62,10,29},b[10];
for(i=0;i<10;i++)
if(a[i]%2==0)b[n++]=a[i];
for(i=0;ifor(j=0;jif(b[j]>b[j+1]){temp=b[j];b[j]=b[j+1];b[j+1]=temp;}
p=fopen("Design1.dat","w");
for(i=0;i{fprintf(p,"%3d",b[i]);
if((i+1)%3==0)fputc(p,‘\n’);}
fclose(p);}
运行结果:
61014
206288
21.求输入整数的各位数字之和。
#include#include
voidmain()
{intn,s=0;
scanf("%d",&n);
______1______//n=fabs(n);
while(n!
=0){
______2______//s+=n%10;
n=n/10;}
printf("%d\n",s);}
22.关于生产能力的数学应用题。
#include
intyear(intx)
{floatp=11.5;inty=1999;
while(p<=x)
{p=p*(1+0.098);y++;}
returny;}
voidmain()
{FILE*p;
p=fopen("design.dat","w");
fprintf(p,"%d,%d",year(20),year(30));fclose(p);}
运行结果:
2005,2010
23.穷举法求解方程。
#include
voidmain()
{FILE*p;intx,y,z,k=0;
p=fopen("Design1.dat","w");
for(x=-45;x<45;x++)
for(y=-45;y<45;y++)
for(z=-45;z<45;z++)
if(x*x+y*y+z*z==2000)k++;
fprintf(p,"%d",k);fclose(p);}
运行结果:
144
24.字符串排序。
#include#include
voidmain()
{FILE*p;char*s="634,.%@\\w|sq2",c;
inti,j,k,n=strlen(s);
p=fopen("Design2.dat","w");
for(i=0;ifor(j=i+1;jif(*(s+j)<*(s+i)){c=*(s+i);*(s+i)=*(s+j);*(s+j)=c;}
for(i=0;ifclose(p);}
运行结果:
%,.2346@\qsw|
25.将整数首尾倒置。
#include#include
longf(longn)
{longm,y=0;m=fabs(n);
while(m!
=0){
y=y*10+m%10;
______1______//m/=10;}
if(n>=0)returny;
else______2________//return–y;}
voidmain()
{printf("%ld\t",f(12345));printf("%ld\n",f(-34567));}
运行结果:
54321-76543
26.求数组的平均值,及与平均数的差。
#include#include
voidmain()
{FILE*p;inti,k=0;
floatx[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81},d,v=0;
for(i=0;i<10;i++)v+=x[i];v=v/10;d=fabs(x[0]-v);
p=fopen("Design1.dat","w");
for(i=1;i<10;i++)
if(fabs(x[i]-v)fprintf(p,”%.5f”,x[k]);fclose(p);}
运行结果:
2.10000
27.求平方根数列之和。
#include#include
voidmain()
{FILE*p;
inti;doubles=0;
for(i=2;i<=10;i++)
s+=sqrt(i);
p=fopen(“design2.dat”,”w”);
fprintf(p,“%.10f\n”,s);
fclose(p);}
运行结果:
28.求多项式之和
#include
voidmain()
{inti,a,n;longt=0;
/*********1*******/
s=0;//longs=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++){
/*******2******/
t=t*10+i;//t=t*10+1
s=s+t;}
s=s*a;
printf("%ld\n",s);}
29.计算学生的平均成绩,并输出。
#include
structSTUDENT
{charname[16];
intmath;
intenglish;
intcomputer;
intaverage;};
voidGetAverage(structSTUDENT*pst)/*计算平均成绩*/
{intsum=0;
sum=___________1____________//sum+pst->math+pst->english+pst->computer;
pst->average=sum/3;}
voidmain()
{inti;
structSTUDENTst[4]={{"Jessica",98,95,90},{"Mike",80,80,90},
{"Linda",87,76,70},{"Peter",90,100,99}};
for(i=0;i<4;i++)
{GetAverage(____2________);//st+i}
printf("Name\tMath\tEnglish\tCompu\tAverage\n");
for(i=0;i<4;i++)
{printf("%s\t%d\t%d\t%d\t%d\n",st[i].name,st[i].math,st[i].english,
st[i].computer,st[i].average);}}
30.求符合条件的数。
#include#include#include
voidmain()
{FILE*p;inti,j;
(p=fopen("design.dat","w");
for(i=1;;i++)
if(i%3==1&&i%5==3&&i%7==5&&i%9==7)break;
fprintf(p,"%d",i);
fclose(p);}
运行结果:
313
31.求Armstrong数。
#include#include
voidmain()
{inti,m,s=0;
printf("armstrongnumbersin100-999:
");
for(i=100;i<1000;i++)
{m=i;
s=0;
while(m!
=0)
{s+=pow(m%10,3);m=m/10;}
if(s==i)printf("%5d",i);}}
运行结果:
153370371407
32.将两个字符串连接起来。
#include
voidmain()
{chars1[80],s2[40];
inti=0,j=0;
printf("\ninputthefirststring:
");
scanf("%s",s1);
printf("\ninputthesecondstring:
");
scanf("%s",s2);