c二及试题库 联系客服

发布时间 : 星期二 文章c二及试题库更新完毕开始阅读fc1385b465ce050876321368

C语言省二级考试上机模拟试题库

试题整理时间:2006、3、7

float f(float x,float y),min; int x,y,x1,y1;

一、求最值问题

1,以下程序中\N ____\是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。 #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; max=f(1);

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

2,设计程序:对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式\写到考生目录中Paper子目录下的新建文件design.dat。 #include #include void main() { FILE *p; float f(float),max,x; max=f(1);

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

float f(float x)

{return (x-10*cos(x)-5*sin(x));}

3,设计程序:z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式\写到考生目录中Paper子目录下的新建文件design.dat。 #include void main() { FILE *p;

min=f(1,1);x1=1;y1=1; for(x=1;x<=6;x++)

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

if(min>f(x,y)) {min=f(x,y);x1=x;y1=y;} printf(“%d,%d”,x1,y1); p=fopen(“design.dat”,”w”); fprintf(p, “%d,%d”,x1,y1); fclose(p); }

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

4,设计程序:在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式\写到考生目录中Paper子目录下的新建文件design.dat。 #include #include void main() { FILE *p; int i,k=0; float

x[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); for(i=1;i<10;i++)

if(fabs(x[i]-v)

二、素数/合数/亲密数对/质数因子

1,设计程序:计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数??的值sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写到考生目录中Paper子目录下的新建文件design.dat。 #include int cnt,sum;

1

void JSValue()

{ int i,j,half,values[100]; cnt=0;sum=0; for(i=800;i<=500;i--) { half=i/2;

for(j=2;j<=half;j++) if(i%j==0)break;

if(j==half+1) {values[cnt]=i;cnt++;} }

for(i=0;i

if(i%2==0) sum+=values[i]; else sum-=values[i]; }

void main() { FILE *p; JSValue();

printf(\p=fopen(“design.dat”,”w”); fprintf(p, \ fclose(p); }

2,设计程序:计算500~800区间内素数的个数cnt和素数和sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写到考生目录中Paper子目录下的新建文件design.dat。 #include int cnt,sum; void JSValue() { int i,j,half; cnt=0;sum=0; for(i=500;i<=800;i++) { half=i/2;

for(j=2;j<=half;j++) if(i%j==0) break;

if(j==half+1) {sum+=i;cnt++;} } }

void main() { FILE *p; JSValue();

printf(\ p=fopen(“design.dat”,”w”); fprintf(p, \ fclose(p); }

3,以下程序中\N ____\是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输出6~1000之间的完数(1个数的因子和等于其自身的数:6=1+2+3、28=1+2+4+7+14,则6、28都是完数)。 #include void main() { int i,j,s;

for(i=6;i<=1000;i++) { s=1;

for(j=2;j<=i/2;j++) if(i%j==0) s+=j; if(s==i) printf(\ } }

4,设计程序:在6至10000内找出所有的合数,并顺序将每个合数用语句 “printf(\” 写到考生目录中Paper子目录下的新建文件design.dat。说明:某数等于其诸因子之和则该数为合数,如6=1+2+3,28=1+2+4+7+14则6、28就是合数。 #include void main() { int n,i,s; FILE *p; for(n=6;n<=10000;n++) { s=1;

for(i=2;i<=n/2;i++) if(n%I==0) s+=i; if(s==n) printf(“m”,n); p=fopen(“design.dat”,”w”); fprintf(p, “m”,n); fclose(p); } }

5,设计程序:在6至5000内找出所有的亲密数对,并将每对亲密数用语句printf(\”写到考生目录中Paper子目录下的新建文件design.dat。说明:若a,b为1对亲密数,则a的因子和等于b,b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。

#include void main()

{ int a,b,c,k; FILE *p; for(a=6;a<=5000;a++) {c=1;

2

for(i=2;i<=a/2;i++) if(a%i==0)c+=i; for(b=a+1;b<=5000;b++) {if(b!=c) continue; else{ k=1;

for(i=2;i<=b/2;i++) if(b%i==0) k+=i;

if(k==a) printf(“mm\\n”,a,b); }

}

p=fopen(“design.dat”,”w”); fprintf(p, “mm\\n”,a,b); fclose(p); } }

6,以下程序中“/***** N ***** /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、5、7、11)。 #include void main() { int n,i;

scanf(\ /****** 1 ******/ i=2; while(n>1) if(n%i==0) { printf(\ n/=i; } else

/******** 2 *******/ i++; }

三、公倍数/公约数

1,在以下程序中“/***** N ***** /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入m、n(要求输入数均大于0,且m>=n),输出它们的最小公倍数。

#include void main()

{ int m,n,k;

/******** 1 *********/

while(scanf(\m<=0|| n<=0||m

for(k=m; k%n!=0;) /******** 2 ********/ k=k+m; printf(\}

2,在以下程序中\N ____\是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入m、n(要求输入数均大于0),输出它们的最大公约数。 #include void main() { int m,n,k;

while(scanf(\m<=0||n<=0 ); for(k=m<=n?m:n ; n%k!=0||m%k!=0; k--); printf(\}

四、一维数组/二维数组

1,以下程序中\N ____\是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能: 求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。例如:b[1]=a[1]+a[0],??,b[9]=a[9]+a[8]。 #include void main() { int a[10],b[10],i;

printf(\ \

for (i=0; i<10;i++) /* 数组输入 */

scanf(\ for (i=1; i<10; i++)

b[i]=a[i]+a[i-1]; /* 计算b数组中的元素 */ for (i=1; i<10; i++) { printf(\

if (i%3==0) printf(\ /* 每行打印3个数据 */ }

3

}

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

{ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; 4,以下程序中\N ____\是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数f,求二维数组a中全体元素之和。 #include float f(int *x[ ],int m,int n) { float y=0; int i,j;

for(i=0;i

p=fopen(\ for(i=0;i<3;i++) {

for(j=0;j<3;j++) fprintf(p,\ fprintf(p,\ } fclose(p); }

3,设计程序:将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写到考生目录中Paper子目录下的新建文件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; float x; int i,j; for(i=0;i<3;i++) { x=a[i][0]; for(j=0;j<3;j++)

if(fabs(x)

p=fopen(\ for(i=0;i<3;i++) {

for(j=0;j<3;j++) fprintf(p,\ fprintf(p,\ } fclose(p); }

}

void main() { float

a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3];

int i;

for(i=0;i<3;i++) b[i]=a[i]; printf(\}

五、回文

1,设计程序:寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。所谓回文数是指各位数字左右对称,例如121、676、94249等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果写到考生目录中Paper子目录下的新建文件design.dat。 #include #include #include int JSValue(long m) { int i=0,j,a[100]; while(m!=0)

{a[i]=m;m/=10;i++;} for(j=0;j

if(a[j]!=a[i-1-j]) return 0; return 1; }

void main()

{ long m; FILE *p;

p=fopen(\

for(m=11;m<1000;m++)

if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m)

4