浙江省计算机c语言二级成绩,[转载]浙江省计算机二级考试C语言

(二)

上机编程题

1.

程序设计题:z=f(x,y)=(3.14*x-y)/(x+y),

若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式

"%d,%d" 写入到考生目录下新建文件design.dat。

#include

void main()

{  FILE *p; float f(int

x,int  y),min;

int

x,y,x1,y1;

//此处起要求考生自己编制程序

min=100;

p=fopen(“design.dat”, “w”);

for(x=1;x<6;x++)

for(y=1;y<6;y++)

if(f(x,y)

{ min=f(x,y);  x1=x;

y1=y; }

fprintf(p,

“%d,%d”,x1,y1); // 答案:x1=1,

y1=5

fclose(p); //

若x<=6

及y<=6 则

x1=1, y1=6

}

float f(int u,int v)

{ return (3.14*u-v)/(u+v); }

4.程序设计题:对x=1,2,...,10,求函数 f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式"%.3f"写到考生目录下新建文件

design.dat。

#include

#include

void main()

{ FILE *p; float f(float),max,x;

//此处起要求考生自己编制程序

p=fopen(“design.dat”, “w”);

max=f(1);

for(x=2;x<=10;x++)

if(max

max=f(x);

fprintf(p,”%.3f”,max); //

答案:21.111

fclose(p);

}

float

f(float y)

{ y=y-10*cos(y)-5*sin(y);

return

(y);

}

6.

程序设计题:数组元素x[i]、y[i]表示平面 上某点坐标,统计10个点中同处在圆

(x-1)*(x-1)+(y+0.5)*(y+0.5)=25 和 (x-0.5)*(x-

0.5)+y*y=36内的点数k,并将变量k的值以格式"%d"写到考生目录下新建文件design.dat。

#include

#include

void main()

{ FILE *p; int i,k=0;

float

x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float

y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

//此处起要求考生自己编制程序

p=fopen("design.dat", "w");

for(i=0;i<10;i++)

if(((x[i]-1)*(x[i]-1)+(y[i]+0.5)*(y[i]+0.5)<=25)&&

((x[i]-0.5)*(x[i]-0.5)+(y[i]*y[i])<=36))

k++;

fprintf(p,"%d",k); // 答案:3

fclose(p);

}

7.

程序设计题:数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式"%f"写到考生目录下新建文件

design.dat。

#include

#include

#define len(x1,y1,x2,y2)

sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

void main()

{  FILE

*p; int i,j; float c,minc;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float

y[]={-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("design.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); //

答案:1.457944

fclose(p);

}

8.

程序设计题:将数组a的每一行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...,)然后将a数组写入到考生目录下新建的文件design.dat.

#include

#include

void main( )

{ float

a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p; int

i,j;

//此处起要求考生自己编制程序

float k;

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open in

FILEn"); exit(0); }

for(i=0;i<3;i++)

{

k = a[i][i];

for(j=0;j<3;j++)

a[i]

[j]=a[i][j]/k;

}

//

此处起要求考生自己编制程序

for(i=0;i<3;i++) {

for(j=0;j<3;j++)

fprintf(p,"%10.6f",a[i][j]); // 答案: 1.000000 2.076923 2.769231

fprintf(p,"n");

// 0.666667 1.000000 1.566667

} // 2.362205 3.149606 1.000000

fclose(p);

}

9.

程序设计题:计算表达式1+2!+3!+...+12!的值,并将计算结果以格式"%d"写入到考生目录下新建的文件design.dat。

#include

#include

void main( )

{ FILE *p;

int s=1,k=1,i;

// 此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open inFILEn"); exit(0); }

for(i=2;i<=12;i++)

{ k*=i;

s+=k; }

fprintf(p,"%d",s); // 答案:522956313

fclose(p);

}

10.

程序设计题:在6至1000内找出所有的合数,并顺序将每个合数用语句“fprintf(p,"%6d",n)”写入到考生目录下新建的文件

design.dat。说明:某数等于其诸因子之和则该数为合数,如6=1+2+3,28=1+2+4+7+14 则

6、28就是合数。

#include

#include

void main()

{  FILE *p; int

n,i,s;

//此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open inFILEn"); exit(0); }

for(n=6;n<=1000;n++)

{ s=0;

for(i=1;i

if(n%i==0) s+=i;

if(n==s)

fprintf(p,"%6d",n); //

答案:6 28

496

}

fclose(p);

}

11.

程序设计题:在正整数中找出一个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式"%d"写到考生目录下新建文件design.dat。

#include

#include

void main( )

{

// 此处起要求考生自己编制程序

FILE

*p; int i;

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open FILE");

exit(0); }

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

12.程序设计题:a、b、c为区间[1,100]的整数,统计使等式

c/(a*a+b*b)=1成立的所有解的个数,并将统计数以格式"%d"写入到考生目录下新建文件design.dat(若a=1、b=3、c=10是1个解,则a=3、b=1、c=10

也是解)

#include

void main()

{

FILE

*p; int n=0,a,b,c;

//

此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open inFILEn"); exit(0); }

for(a=1;a<=100;a++)

for(b=1;b<=100;b++)

for(c=1;c<=100;c++)

if((a*a+b*b)==c) // 同学们注意:若写成

c/(a*a+b*b)==1就上当了!

n+=1; // 想一想为什么?

fprintf(p,"%d",n); // 答案:69个

fclose(p);

}

13.

程序设计题:对x=1,2,...,10,求函数f(x)=x-10*cos(x)+5*sin(x)的最大值,并将该数以格式

"%.2f" 写到考生目录下新建文件design.dat。

#include

#include

#include

void main()

{

FILE

*p; float

f(float),max; int x;

//

此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open

filen"); exit(0); }

max=f(1);

for(x=2;x<=10;x++)

if(max

max=f(x);

fprintf(p,"%.2f",max);//答案:20.17

fclose(p);

}

float f(float x)

{ x=x-10*cos(x)+5*sin(x);

return x;

}

14.

程序设计题:统计满足条件

x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式"%d"写入到考生目录下新建的文件design.dat。说明:若a、b、c是一个解,则a、c、b也是一个解,等等。

#include

void main()

{ FILE *p; int x,y,z,k=0;

//

此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open

FILE"); exit(0); }

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++; // 该题有x,y,z 取值范围的问题!

fprintf(p,"%d",k);

//答案:144

fclose(p);

}

15.

程序设计题:在6至5000内找出所有的亲密数对,并将每对亲密数用语句“fprintf(p,"%6d,%6dn",a,b);”写到考生目录下新建文件design.dat。

说明:若a、b为一对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。

如:220、284是一对亲密数,284、220也是一对亲密数。

#include

void main()

{  FILE

*p; int i,a,b,c;

p=fopen("design.dat","w");

printf("程序正在运行,请稍等....n");

for(a=6;a<=5000;a++)

{

// 此处起要求考生自己编制程序 */

b=c=0;

for(i=1;i

if(a%i==0) b=b+i;

for(i=1;i

if(b%i==0) c=c+i;

if(a==c && a!=b)

fprintf(p,"%6d,%6dn",a,b) //

答案:220, 284

} // 284, 220

fclose(p); // 1184, 1210

} // 1210, 1184

// 2620, 2924

// 2924, 2620

16.

程序设计题:

计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式"%.6f"写到考生目录下新建文件design.dat。

#include

#include

#include

void main( )

{  FILE

*p; float s=1,t=1,i=3;

// 此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open inFILEn"); exit(0); }

do{

t=-t*

(i-1)*i;

s=s+1/t;

i+=2;

}while(fabs(1/t) >= 1e-5);

fprintf(p,"%.6f",s); //

答案:0.841471

fclose(p);

}

17.

程序设计题:x[i],y[i]分别表示平面上1个点的x、y坐标,求下列5点各点间距离总和,并将该数以格式"%.4f"写到考生目录下新建文件design.dat。

#include

#include

#include

void main()

{  FILE

*p; float s,x[5]={-1.5,2.1,6.3,3.2,-0.7};

float

y[5]={7,5.1,3.2,4.5,7.6}; int i,j;

//

此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cannot open inFILEn"); exit(0); }

s=0;

for(i=0;i<4;i++)

for(j=i+1;j<5;j++)

s+=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));

fprintf(p,"%.4f",s); //

答案:45.2985

fclose(p);

}

18.

程序设计题:数列第1项为81,此后各项均为它前1项的平方根,统计该数列前30项之和,并将和以格式"%.3f"写入到考生目录下新建文件design.dat。

#include

#include

#include

void main()

{  FILE *p; float

s=0,a=81,i;

//

此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("Can't open

filen"); exit(0); }

for(i=0;i<30;i++)

{

s+=a;

a=sqrt(a);

}

fprintf(p,"%.3f",s); //

答案:121.336

fclose(p);

}

19.

程序设计题:在1000至1100内找出所有的素数,并顺序将每个素数用语句“fprintf(p,"%5d",i)”写入到考生目录下新建的文件design.dat。说明:素数是自然数中除了1以外只能被1和其自身整除的数。

#include

#include

#include

void main()

{

FILE

*p; int j;

//此处起要求考生自己编制程序

int prime(int n);

if((p=fopen("design.dat","w"))==NULL)

{ printf("cann't open a

FILE"); exit(0); }

for(j=1000;j<=1100;j++)

if(prime(j)==1)

fprintf(p,"%5d",j);

fclose(p);

}

int prime(int n)

{ int i;

for(i=2;i

if(n%i==0)  return 0;

return

1; //

注意:这里不能else

}

*********以下题目是2003年秋考新增加的程序设计题!***********

20.

程序设计题:计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式"%f"写到考生目录下新建文件design.dat。

#include

#include

#include

void main()

{ FILE *p; int i; float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

// 此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cann't open a

FILE"); exit(0); }

for(i=0; i<10; i++)

{ y=y+a[i]*t;

t=t*x;

}

//

或用如下最笨的写法:

// y=a[0]+a[1]*x+a[2]*x*x+a[3]*x*x*x+a[4]*x*x*x*x+a[5]*x*x*x*x*x;

// y=y+a[6]*x*x*x*x*x*x+a[7]*x*x*x*x*x*x*x+a[8]*x*x*x*x*x*x*x*x;

// y=y+a[9]*x*x*x*x*x*x*x*x*x;

fprintf(p,"%f",y); //

答案:98.722542

fclose(p);

}

21.

程序设计题:将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写入到考生目录下新建文件design.dat。

#include

#include

#include

void main()

{ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p; float x; int i,j;

//

此处起要求考生自己编制程序

for(i=0;i<3;i++)

{ x=fabs(a[i][0]);

for(j=1;j<3;j++)

if(x

for(j=0;j<3;j++)

a[i][j]=a[i][j]/x;

}

p=fopen("design.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.361111 0.750000 1.000000

0.425532 0.638298 1.000000

0.750000 1.000000 0.317500

22. 程序设计题:

数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和,并将求和的结果以格式"%ld"写到考生目录下新建文件design.dat。

#include

#include

void main()

{ FILE *p; long s=0,i,a[40];

//

此处起要求考生自己编制程序

if((p=fopen("design.dat","w"))==NULL)

{ printf("cann't open a

FILE"); exit(0); }

a[0]=1; a[1]=1;

for(i=2;i<40;i++)

a[i]=a[i-1]+a[i-2];

for(i=0;i<40;i++)

s=s+a[i];

fprintf(p,"%ld",s); // 答案:267914295

fclose(p);

}

24.

程序设计题:计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...的值,并将其以格式"%f"写到考生目录下新建文件design.dat。

#include

#include

void main()

{ FILE *p; int i; float

x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

// 此处起要求考生自己编制程序

t=1; y=0;

if((p=fopen("design.dat","w"))==NULL)

{ printf("cann't open a

FILE"); exit(0); }

for(i=0; i<10; i++)

{ y=y+a[i]*t;

t=-t*x*1/(i+1);

}

fprintf(p,"%f",y); //

答案: -6.495819

fclose(p);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值