浙江省计算机二级C语言上机题库_第1页
浙江省计算机二级C语言上机题库_第2页
浙江省计算机二级C语言上机题库_第3页
浙江省计算机二级C语言上机题库_第4页
已阅读5页,还剩37页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二部份C 程序设计上机操作题1一、数列求和1二、最大公约数、最小公倍数6三、排序算法6四、数组8五、求整数n 的各位数字及各数字之和11六、平面上各点之间的距离13七、数制转换16八、字符串处理18九、最大值与最小值24十、斐波那契(Fibonacci) 数列27十一、水仙花、完数、回文数与亲密数28十二、方程求根30十三、回文数、因子、质因子、素数33十三、其他算法34第二部份C 程序设计上机操作题一、数列求和1、程序调试题试题一该程序功能:输入x 和正数小于 eps 为止。#include <stdio.h>#include <math.h>void main()

2、 float x,eps,s=1,t=1,i=1;scanf("%f%f",&x,&eps);do eps,计算多项式1-x+x*x/2!-x*x*x/3!+.的和直到末项的绝对值/* 1 */t=-t*x/+i;/+i-i+s+=t;/* 2 */ while(fabs(t)<eps);/<->=printf("%fn",s);试题二该程序功能:运行时若输入a、n 分别为3、 6,则输出下列表达式的值:3+33+333+3333+33333+333333#include <stdio.h>void main

3、()int i,a,n; long t=0;/* 1 */s=0;/s=0-long s=0scanf("%d%d",&a,&n);for(i=1;i<=n;i+) /* 2 */t=t*10+i;/ i-1s=s+t;s=s*a;printf("%ldn",s);2、程序填空题试题一程序功能:调用函数f 计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。#include <stdio.h>float f(float, float*,int);void mai

4、n( )float b5=1.1,2.2,3.3,4.4,5.5; printf( “%fn ”,f(1.7,b,5);float f(1)/ float f( float x, float a , int n)float y=a0,t=1;int i;for(i=1;i<n;i+) t=t*x; y=y+ai*t; 2;/ return y3、程序设计题试题一设计程序: 计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+ 的值,并将其值以格式"%.6f" 写入到考生目录中Paper 子目录下的新建文件design.dat 中。#

5、include<stdio.h>#include<math.h>void main()FILE *p;int i; float x=2.345,t=1.0,y=0.0;float a10=1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9;/*考生在这里添加代码p=fopen(“design.dat”,”w”);y=a0;for(i=1;i<10;i+)t=t*x;y=y+ai*sin(t);fprintf(p,”%.6f ”,y);fclose(p);试题二计程序:计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*

6、x/3!+.录中 Paper 子目录下的新建文件design.dat 中。的值,并将其以格式"%f" 写到考生目#include <stdio.h>#include <math.h>void main() FILE *p; int i; float x=1.279,t,y;float a10=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65;/ 考生在这里添加代码p=fopen(“design.dat”,”w”);t=1;y=a0;for(i=1;i<10;i+)t=-t*x/i;y=y+ai*t;f

7、printf(p,"%f",y);fclose(p);试题三设计程序:计算表达式1+2!+3!+.+12!的值,并将计算结果以格式"%ld"写入到考生目录中Paper 子目录下的新建文件 #include <stdio.h> void main()design.dat 中 FILE *p; long s=1,k=1; int i; /考生在这里添加代码p=fopen("design.dat","w");for(i=2;i<=12;i+)k=i*k;s=s+k;fprintf(p,"%ld

8、",s);fclose(p);试题四设计程序: 计算多项式 a0+a1*x+a2*x*x+a3*x*x*x+. 的值,并将其值以格式 "%f" 写到考生目录中 Paper 子目录下的新建文件 design.dat 中。#include <stdio.h>#include <math.h>void main() FILE *p; int i; float x=1.279,t=1,y=0;float a10=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65;/ 考生在这里添加代码p=fopen(&qu

9、ot;design.dat","w");for(i=0;i<10;i+) y=y+t*ai; t=t*x;fprintf(p,"%f",y);fclose(p);试题五设计程序:计算2 的平方根、 3 的平方根、 .、10 的的平方根之和,要求计算结果具有小数点后10 位有效位数,并以格式"%.10fn"写到考生目录中Paper 子目录下的新建文件design.dat中。#include <stdio.h>#include <math.h>void main()FILE *p;/ 考生在这里添加

10、代码int i;float s=0;p=fopen("design.dat","w");for(i=2;i<=10;i+)s=s+sqrt(i);fprintf(p,"%.10f",s);fclose(p);试题六设计程序: 数列第 1 项为 81,此后各项均为它前1 项的正平方根, 统计该数列前并以格式 "%.3f" 写到考生目录中Paper 子目录下的新建文件design.dat 中。30 项之和,#include <stdio.h>#include <math.h>void ma

11、in() FILE *p; float s=0,a=81,i;/ 考生在这里添加代码p=fopen("design.dat","w");for(i=1;i<=30;i+)s=s+a;a=sqrt(a);fprintf(p,"%.3f",s);fclose(p);试题七在数组 a 的 10 个数中求平均值v,将大于等于v 的数组元素进行求和, 并将结果以格式"%.5f"写到考生目录中Paper 子目录下的新建文件design.dat 中。#include <stdio.h>void main() F

12、ILE *p; int i;float a10=7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81,sum,v=0;/ 考生在这里添加代码 p=fopen("design.dat","w"); for(i=0;i<10;i+)v=v+ai/10;sum=0;for(i=0;i<10;i+)if(ai>v)sum=sum+ai;fprintf(p,"%.5f",sum);fclose(p);试题八设计程序:利用公式 /4 1-1/3+1/5-1/7+ 公式计算 的近似值,直到某一项的绝对

13、值小于 1e-6 为止。( /4 的结果不包含此项)将结果以格式"%.6f" 写入到考生目录中Paper子目录下的新建文件design.dat 中。#include <stdio.h>#include <math.h>void main()FILE *fp;float n=1,t=1,pi=0;int i;/ 考生在这里添加代码f p=fopen("design.dat","w");while(1.0/t>=1e-6)pi=pi+n*1.0/t;t=t+2;n=-n;pi=pi*4;fprintf(fp,

14、"%.6f",pi);fclose(fp);试题九计算数列1,-1/3!,1/5!,-1/7!的和至某项的绝对值小于以格式 "%.6f" 写入到考生目录中Paper 子目录下的新建文件1e-5 为止(该项不累加) ,将结果design1.dat 中。#include <stdio.h>#include <math.h>void main() FILE *p; float s=1,t=1,i=3;/ 考生在这里添加代码p=fopen("d:design1.txt","w");t=-t*(i-1

15、)*i;while(fabs(1/t)>=1e-5)s+=1/t;i=i+2;t=-t*(i-1)*i;fprintf(p,"%.6",s);fclose(p);二、最大公约数、最小公倍数1、程序调试题试题一该程序功能:输入m、 n(要求输入数均大于0,且 m>=n ),输出它们的最小公倍数。#include <stdio.h>void main()int m,n,k; /* 1 */while(scanf("%d%d",&m,&n),m<0 && n<0);/ m<0 &

16、& n<0-!(m>0&&n>0&&m>=n)for(k=m; k%n!=0;)/* 2 */k=k+n; / 改为: k=k+m printf("%dn",k);6/82、程序填空题试题一该程序功能:输入m、 n(要求输入数均大于0),输出它们的最大公约数。#include <stdio.h>void main()int m,n,k;while(scanf("%d%d",&m,&n), _1_ );/!( n>0&&m>0 )for(

17、 _2_; n%k!=0|m%k!=0; k-);/k=m 或 k=nprintf("%dn",k);三、排序算法1、程序调试题该程序功能:用选择法 对10 个整数按升序排序。#include <stdio.h>#define N 10void main()inti,j,min,temp;int aN=5,4,3,2,1,9,8,7,6,0;printf("nThe array is:n");/*输出数组元素*/for (i=0;i<N;i+)printf("%5d",ai);for (i=0;i<N-1;i+

18、)/*排序操作*/min = i;for (j=i+1; j<N; j+)/* 1 */if(amin<=aj)min =j;/* 2 */temp=amin; amin=aj; aj=temp;/<=-/*数据交换/j-i>*/printf("nThe sorted numbers: n");/*输出排序结果*/for (i=0;i<N;i+)printf("%5d",ai);printf("n");2、程序设计题该程序功能:用冒泡法 对10 个整数按升序排序。#include <stdio.h&

19、gt;#define N 10void main()inti,j,min,temp;int aN=5,4,3,2,1,9,8,7,6,0;printf("nThe array is:n");/*输出数组元素*/for (i=0;i<N;i+)printf("%5d",ai);/for (i=0;i<N;i+)/*排序操作*/for (j=0; j<N-1-i; j+)if(aj>aj+1)temp=aj; aj=aj+1; aj+1=temp;/*数据交换*/printf("nThe sorted numbers: n&

20、quot;);/*输出排序结果*/for (i=0;i<N;i+)printf("%5d",ai);printf("n");四、数组1、程序填空题试题一该程序功能:输入数组x7 ,调用函数 f,去除数组中的负数,输出结果为:1 3 46#include <stdio.h>void f(int *a,int *m) int i,j;for(i=0;i<*m;i+)if(ai<0) for(j=i-;j<*m-1;j+) aj=aj+1;_1_;/ ( *m ) -void main() int i,n=7,x7=1,-2

21、,3,4,-5,6,-7;_2_;/f(x,&n)for(i=0;i<n;i+) printf("%5d",xi);printf("n");试题二该程序功能:函数 f 将数组循环左移k 个元素,数组 x7 调用函数 f 后的输出结果为: 4567123#include <stdio.h>void f(int *a,int n,int k) int i,j,t;for(i=0;i<k;i+) _1_;/t=a0for( _2_ ) aj-1=aj;/j=1;j<n;j+an-1=t;void main() int i,

22、x7=1,2,3,4,5,6,7; f(x,7,3);for(i=0;i<7;i+) printf("%5d",xi);printf("n");试题三该程序功能:调用函数f,求二维数组a 中全体元素之和。#include <stdio.h>float f( _1_) float y=0; int i,j;for(i=0;i<m;i+) for(j=0;j<n;j+) y=y+*(*(x+i)+j);return y;/float *x,int m,int nvoid main() float a34=1,2,3,4,5,6,

23、7,8,9,10,11,12,*b3; int i;for(i=0;i<3;i+) bi=_2_;printf("%.2fn",f(b,3,4);/*(a+i)试题四求出数组a 中相邻两个元素的和,并将这些和存放在数组a 中,按每一行出。(例如: b1=a0+a1,b2=a1+a2,b9=a8+a9 )#include <stdio.h>void main()3 个元素的形式输int a10,b10,i;printf("nInput 10 numbers:");for (i=0; i<10;i+)/*数组输入*/scanf(&qu

24、ot;%d", &ai);for (i=1; i<10; i+)bi=_ ai-1+ai_;/*计算b 数组中的元素*/for (i=1; i<10; i+)printf("%3d",bi);if (_i%3=0_)printf("n");/*每行打印3 个数据*/2、程序设计题试题一设计程序: 将数组 a 的每 1 行均除以该行上的主对角元素(第 1 行同除以a00 ,第 2 行同除以 a11 ,.),然后将a 数组写入到考生目录中Paper 子目录下的新建文件design.dat 中新建的文件design.dat 中。#

25、include <stdio.h>void main() float a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27; FILE *p;/* 以下要求考生写的代码*/float temp;int i,j;p=fopen(“design.dat”,”w”);for(i=0;i<3;i+)temp=aii;for(j=0;j<3;j+)fprintf(p,"%5.1f",aij/temp);fprintf(p,"n");fclose(p);试题二设计程序: 将数组 a 的每 1 行均除以该行上绝对值最大的元素,然后将

26、a 数组写入到考生目录中 Paper 子目录下的新建文件design.dat 中。#include <stdio.h>#include <math.h>void main() float a33=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=ai0;for(j=0;j<3;j+)if(fabs(x)<fabs(aij)x=aij;for(j=0;j<3;j+)aij=aij/x;p=fopen("design.dat

27、","w");for(i=0;i<3;i+) for(j=0;j<3;j+) fprintf(p,"%10.6f",aij);fprintf(p,"n");fclose(p);试题三在整数数组a 中找出偶数放到数b 中,对数组b 按从小到大的顺序排序后发格式“%3d”每行 3 个数写入考生文件夹中paper 子文件夹下的新建文件design1.dat。#include <stdio.h>void main() FILE *p;int i,j,temp,n=0;int a10=7,6,20,3,14,8

28、8,53,62,10,29,b10;/ 考生在这里添加代码p=fopen("design1","w");for(i=0;i<10;i+)if(ai%2=0)bn+=ai;for(i=0;i<n-1;i+)for(j=0;j< n-1-i;j+)if(bj>bj+1)temp=bj;bj=bj+1;bj+1=temp;for(i=1;i<=n;i+)if(i%3=0) fprintf(p,"%3dn",bi-1);else fprintf(p,"%3d",bi-1);fclose(p);

29、五、求整数n 的各位数字及各数字之和1、程序调试题试题一该程序功能:运行时输入整数n,输出n 各位数字之和(如n=1308则输出12, n=-3204则输出 9)。#include <stdio.h>#include <math.h>void main()int n,s=0;scanf("%d",&n);n=fabs(n);/* 1 */while(n>1) /n或n>0或n!=0s=s+n%10;/* 2 */n=n%10;/%-/printf("%dn",s);2、程序填空题试题一该程序功能:求输入的整数各

30、位数字之和,如输入234 则输出9,输入-312 则输出6。#include <stdio.h>#include <math.h>void main()int n,s=0;scanf("%d",&n);_ 1 _/n=fabs(n);while(n!=0) _ 2 _/ s=s+n%10n=n/10;printf("%dn",s);试题二该程序功能:输入 1 个整数后,输出该数的位数(若输入 3214 则输出 4,输入 -23156 则输出 5)。#include <stdio.h>void main()int

31、 n,k=0;scanf("%d",&n);while( _1_ )/n或n!=0k+;_2_;/n=n/10printf("%dn",k);试题三该程序功能:调用函数f,将 1 个整数首尾倒置,若程序输入12345,则输出54321;若程序输入 -34567,则输出 -76543 。#include <stdio.h>#include <math.h>long f(long n) long m,y=0; m=fabs(n);while(m!=0) y=y*10+m%10;_1_/m=m/10;if(n>=0) re

32、turn y;else _2_/ return -y;void main()printf("%ldt",f(12345);printf("%ldn",f(-34567);3、程序设计题试题一设计程序:选出5000 以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10 倍。计算并输出这些四位自然数的个数cnt 及这些数字的和sum 到考生目录中Paper 子目录下的新建文件design.dat 中。#include<stdio.h>void main()FILE

33、 *p;int cnt,sum;/*考生在这里添加代码int i,q,b,s,g;cnt=0;sum=0;p=fopen( “design.dat”,”w ”);for(i=1000;i<5000;i+)g=i%10;s=i%100/10;b=i%1000/100;q=i/1000;if(q+b=s+g && q+b=(g-q)*10)cnt+;sum=sum+q+b+s+g;fprintf(p,"%d,%d",cnt,sum);fclose(p);六、平面上各点之间的距离1、程序调试题试题一该程序功能:输入n,再输入n 个点的平面坐标,然后输出那些距

34、离坐标原点不超过5 的点的坐标值。#include <stdio.h>#include <math.h>#include <stdlib.h>void main()int i,n;/* 1 */struct axy float x,y; a;/a-*ascanf("%d",&n);a=(float*) malloc(n*2*sizeof(float);/a=(struct axy*) malloc(n*2*sizeof(float);for(i=0;i<n;i+)/* 2 */scanf("%f%f",a

35、i.x,ai.y);/ ai.x-.&ai.x ai.y-.&ai.yfor(i=0;i<n;i+)if(sqrt(ai.x*ai.x+ai.y*ai.y)<=5)printf("%f,%fn",ai.x,ai.y);2、程序填空题试题一在考生目录下,有 Modify.c 程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)该程序功能:输入n 和平面上n 个点的坐标,计算各点间距离的总和。#include <stdio.h>#include <math.h>#

36、define f(x1,y1,x2,y2) sqrt(pow(x2-x1,2)+pow(y2-y1,2)1void main( )float *x,*y,s=0;int i,j,n;scanf(“%d”,&n);x=(float*)malloc(sizeof(float)*n*2);y=x+2;for(i=0;i<n;i+) scanf(“%f%f ”,x+i,y+i);for(i=0;i<n-1;i+)for(j=0;j<n;j+)s+=f(xi,yi,xj,yj);/ #include <stdlib.h> 或 #include <malloc.

37、h> / (float*)malloc(sizeof(float)*n*2);printf( “%.2fn ”,s);3、程序设计题试题一设计程序: xi,yi 和,并将结果以格式分别表示平面上一个点的坐标,求下列 10 个点与点 "%.6f" 写入到考生目录中 Paper 子目录下的新建文件(1.0,1.0) 的距离的总design.dat 中。#include<stdio.h>#include<math.h>void main()FILE *p;int i;float x10=-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.

38、2,4.5,7.6;float y10=3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4;float s=0.0;/* 以下要求考生写的代码*/p=fopen(“design.dat”,”w”);/以写方式打开文件for(i=0;i<10;i+)s=s+sqrt((xi-1 ) * ( xi-1 )+(yi-1)*(yi-1);fprintf(p, ”%.6f ”,s);/ 求与点 (1.0,1.0) 的距离之和/以%.6f 的格式将和写到文件fclose(p);试题二设计程序:数组元素 xi 、 yi 表示平面上某点坐标,统计所有各点间最短距离,并将其值以

39、格式 "%f" 写到考生目录中 Paper 子目录下的新建文件 design.dat 中。#include <stdio.h>#include <math.h>#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

40、.97,4.65,-3.33;minc=len(x0,y0,x1,y1);/* 以下要求考生写的代码*/p=fopen(“design.dat”,”w”);for(i=0;i<10;i+)for(j=i+1;j<10;j+)c=len(xi,yi,xj,yj);if(c<minc)minc=c;fprintf(p, ”%f ”,minc);fclose(p);试题三设 计 程 序 : 数 组 元 素xi 、 yi 表 示 平 面 上 某 点 坐 标 , 统 计10个 点 中 处 在 圆(x-1)*(x-1)+(y+0.5)*(y+0.5)=25内的点数k,并将变量k 的值以格

41、式Paper 子目录下的新建文件design.dat 中。"%d" 写到考生目录中#include <stdio.h>#include <math.h>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"); fo

42、r(i=0;i<10;i+)if(xi-1)* (xi-1)+ (yi-0.5)* (yi-0.5)<25) k+;fprintf(p,"%d",k);fclose(p);试题四程序设计题: 考生目录下有 Design.c 程序,请完成以下功能: xi,yi 表示点 d(i) 的平面坐标,求 d(0)至 d(1)、d(1)至 d(2)、 d(4)至 d(0)的连线所构成的边形面积,并将所求面积以格式“ %.4f ”写到考生目录下新建文件design.dat。#include <stdio.h>#include <math.h>void m

43、ain( )FILE 8p; int i; float s,a,b,c,sdim=0; float x5=-4.5,0.5,4.2,2.7,-3;float y5=2.3,4.7,1.3,-2.5,-3.3;p=fopen( “design.dat”, “w”);/ 此处起要求考生自己编制程序for(i=1;i<4;i+)a=sqrt(x0-xi)*(x0-xi)+(y0-yi)*(y0-yi); b=sqrt(xi-xi+1) *(xi-xi+1)+(yi-yi+1)*(yi-yi+1); c= sqrt(x0-xi+1) *(x0-xi+1)+(y0-yi+1)*(y0-yi+1);

44、 s=(a+b+c)/2;sdim+=sqrt(s*(s-a)*(s-b)*(s-c);fprintf(p, “%.4f ”, sdim);fclose(p);七、数制转换1、程序调试题试题一将输入的十进制整数n 通过函数 DtoH 转换为十六进制数, 并将转换结果以字符串形式输出。例如:输入十进制数79,将输出十六进制4f。# include <stdio.h># include <string.h>char trans(int x)if(x<10) return '0'+x;/*1*/else return 'a'+x;/ a+

45、x-a+x-10int DtoH(int n,char *str)int i=0;while(n!=0)stri=trans(n%16);/*2*/n%=16;/%-/i+;return i-1;void main()int i,k,n;char *str;scanf("%d",&n);k=DtoH(n,str);for (i=0;i<=k;i+) printf("%c",strk-i);2、程序填空题试题一该程序功能:将输入的十进制正整数n 通过函数Dec2Bin转换为二进制数,并将转换结果输出。#include <stdio.h>void Dec2Bin(int m)int bin32,j;for(j=0;m!=0;j+)binj= _1_;/m%2m=m/2;for(;j!=0;j-)printf("%d", _2_ );/binj-1void main()int n;scanf("%d",&n);Dec2Bin(n);试题二将输入的十进制整数n 通过函数 DtoH 转换为十六进制数, 并将转换结果以字符串

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论